반응형

 

 

1. REST

: web과 같은 distributed hypermedia system을 위한 구조

: 요청 가능한 resource에 대해 주소를 지정하고 HTTP 위에서 부가적인 전송 계층 없이 상태 표현을 전송하기 위한 방법을 정의

* resource : 주소(URI)를 통해 접근할 수 있는 의미있는 정보

 

 

2. RESTful Web Service 

: REST 개념에 기반하고 HTTP 프로토콜을 이용하여 구현된 resource 지향적인 서비스

1) URI를 통한 resource 식별

2) Internet media type를 이용한 resource 표현 ex) XML, JSON, RSS 등

3) HTTP method를 이용한 resource에 대한 연산 요청 ex) POST(CREATE), GET(READ), PUT(UPDATE), DELETE

 

 

3. spring MVC framework의 REST 지원

: controller 에서 get, post, put, delete 등 모든 http method 요청 처리 가능

- @PathVariable : URI에 대한 요청 처리

- @RequestBody, @ResponseBody : 요청 메시지 -> 자바객체 / 자바객체 -> 응답 메시지 변환 수행

- HttpMessageConverter : XML, JSON, RSS 등 다양한 data format에 대한 변환 처리

- RestTemplate : RESTful Service를 이용하는 클라이언트 개발 지원

 

 

 

 

4. @RequestBody / @ResponsBody

- @RequestBody : 요청 메시지의 body에 포함된 데이터를 저장할 Java 객체 지정

- @ResponseBody : Java 객체를 응답 메시지의 body에 포함될 데이터로 사용

- @RestController : @Controller의 확장으로, @ResponseBody를 자동으로 적용

 

 

 

 

5. HTTP Message Conversion

- Java 객체와 message 간의 변환 처리

: 앞 예제에서 message bodyString 객체 사이의 변환을 위해  StringHttpMessageConverter가 사용됨

: <mvc:annotation-driven/>또는@EnableWebMvc설정을통해 다양한 HttpMessageConverter 구현 객체를 생성 및 이용 가능

 

 

 

 

6. JAXB2를 이용한 XML 처리

- JAXB2 : Java class와 XML 사이의 mapping 을 위한 표준 라이브러리 (Java SE / EE에 포함됨 )

Java objects => XML data (marshalling)

XML data => Java objects (unmarshalling)

 

 

 

예 1)

 

예 2)

 

 

 

- Controller : GET 요청 처리

* 객체 타입(MessageList)JAXB2가 적용된 클래스일 경우, Jaxb2RootElementHttpMessageConverter를 이용하여 return 객체를 XML 데이터로 변환하여 응답 메시지 body에 출력

 

 

- Controller : POST 요청 처리

 

Client(browser) : XML 데이터를 포함한 POST 요청 생성

 

 

 

7. JSON

- Data Type : 수, 문자열, 불린, 배열, 객체(순서가없음), null

예 ) 

 

 

 

 

 

8. Jackson2

: Java 객체와 JSON 형식 데이터 사이의 변환 실행

 

 

- Controller : GET 요청 처리

* Request handler methodJava 객체나 HashMapreturn 할 경우, SpringMappingJackson2HttpMessageConverter를 이용하여 return 객체를 JSON 데이터로 변환함

 

 

 

* JSON 변환 제외 처리 : @JsonIgnore

 

 

* 날짜 형식 변환 처리 : @JsonFormat

 

 

 

- Controller : POST 요청 처리

: 요청 메시지를 통해 전송된 JSON 데이터를 java 객체로 변환하여 사용

 

Client : Ajax

 

 

 

 

 

8. RestTemplate

 

 

- REST client 구현

: RESTful Service를 호출하기 위한 다양한 메소드 제공

: HttpMessageConverter를 이용해 message와 JAVA 객체 간 변환

 

 

- 주요 메서드

1) 가변 인자 방식을 이용한 parameterized URL

2) Map 을 이용한 parameterized URL

3) java.net.URI 이용

 

 

 

 

 

 

9. RestTemplate을 이용한 HTTP method

1) GET 요청

 

 

2) POST

 

- PUT

 

 

 

- DELETE 

 

 

반응형

'Programming > Spring' 카테고리의 다른 글

12. Spring & JPA  (0) 2021.06.08
11. Transaction Management  (0) 2021.06.08
09. Spring JDBC  (0) 2021.06.01
08. MyBatis  (0) 2021.06.01
07. Thymeleaf  (0) 2021.05.31
반응형

 

 

 

 

1. DAO 의 개념

: DBMS를 통해 데이터를 저장 및 검색하는 기능을 전담하는 객체

- business layer와 독립적인 persistence layer 구현 및 변경 가능

- dao mock object를 이용한 테스트 용이

 

 

 

2. Data Access Template

: 각 영속성 기술을 위한 template class 제공한다.

: DAO 에서 반복적으로 실행되는 작업들을 자동으로 수행한다.

 

3. Spring 에서 예외처리 지원

: DB 오류에 관한 다양한 Exception class 제공한다.

: Spring 이 지원하는 Exception은 모두 "unchecked" exception 이다. 즉 try-catch로 잡아서 처리할 필요가 없다.

 

 

4. Data Source 설정

: 데이터베이스에 대한 connection을 제공하는 factory 객체

 

- Connection pool 사용

- JNDI에 등록된 Data Source 

- JDBC driver 직접 이용

 

1) connection pool

: 데이터베이스 커넥션을 미리 생성시키고 pool로 관리함으로써 데이터베이스 접근 성능을 향상시키기 위한 방법

- BasicDataSource 타입의 객체를 spring bean으로 생성

 

 

2) JNDI에 등록된 data source 설정

: Java EE application server에서 data source를 생성하고 JNDI service에 등록 및 사용

 

 

 

 

 

5. JDBC API

: java application에서 데이터베이스를 접근하는 가장 기본적인 방법

- 장점

1) 표준 SQL 언어를 사용

2) 특정 DBMS에서 제공하는 고유 기능 사용 가능

- 단점

1) 데이터 질의, 갱신 등 핵심적인 코드 외에 connection, statement 등의 자원 할당 및 반납, 예외 처리 등과 관련된 코드 필요

2) 위와 같은 코드가 각 데이터 접근 메소드마다 중복됨

 

 

 

- JDBC API 사용 예

 

 

 

 

 

6. Spring JDBC Template Classes

: JDBC 기반 프로그램에서 반복적으로 작성되는 코드를 구현하여 숨김

1) JdbcTemplate

2) NamedParameterJdbcTemplate

 

 

7. JdbcTemplate

- bean 설정 (spring boot는 필요x)

* 참조 관계 주목 !

 

- Query method 1 : query()

: rowMapper - ResultSet 에 포함된 각 행을 추출해서 T type의 domain객체를 생성하는 RowMapper 객체

 

 

 

- RowMapper interface

: mapRow() => ResultSet의 특정 행에 대해 T type의 객체 생성 및 반환

 

 

- 구현 예 1 : RowMapper class를 별도로 정의

 

 

- 구현 예 2: RowMapper를 익명 클래스로 구현

 

 

- 구현 예 3 : Java 8의 Lambda expression 활용

 

 

 

- query method 2 : queryForList()

: 질의가 하나의 column만을 조회하는 경우 RowMapper 대신 그 column type에 해당하는 Java type 이름을 제공

 

 

- query method 3 : queryForObject() 

: 질의 결과로 List 대신 하나의 T type 객체를 반환

: 질의 결과로 검색되는 row 가 하나인 경우 사용

 

 

 

- Insert/Update/Delete method

 

 

 

 

- 가변 길이 인자 지원

 

예 1) 

 

예 2)

 

 

 

 

 

 

 

 

 

 

 

 

8. NamedParameterJdbcTemplate

: 질의에 포함된 parameter에 이름을 사용

=> Object 대신에 Map이나 paramSource 를 인자로 받음

 

 

예시 )

 

 

 

- SqlParameterSource를 사용한 parameter값 설정

 

- BeanPropertySqlParameterSource 이용

 

 

 

 

 

9. SimpleJdbcInsert

예 1)

 

예 2)

 

 

 

10. DaoSupport

- bean 설정

 

 

 

 

 

 

 

반응형

'Programming > Spring' 카테고리의 다른 글

11. Transaction Management  (0) 2021.06.08
10. Spring 기반 RESTful service  (0) 2021.06.07
08. MyBatis  (0) 2021.06.01
07. Thymeleaf  (0) 2021.05.31
06. Spring Boot  (0) 2021.05.27
반응형

 

 

 

1. Data Mappers

: 객체와 데이터베이스 사이에 데이터를 이동시킴

- 객체와 데이터베이스가 서로 독립적으로 유지되고 mapper에 대해서도 독립적임

 

 

2. pom.xml 설정

- 사용할 DBMS의 JDBC driver는 별도 설치 필요

 

 

 

3. MyBatis workflow

 

 

4. Mapper XML 예

 

 

 

 

 

 

 

 

 

5. MyBatis - spring 연동

- pom.xml

 

 

1) SqlSessionFactoryBean

2) SqlSessionTemplate

3) MapperScannerConfigurer

 

 

 

 

반응형

'Programming > Spring' 카테고리의 다른 글

10. Spring 기반 RESTful service  (0) 2021.06.07
09. Spring JDBC  (0) 2021.06.01
07. Thymeleaf  (0) 2021.05.31
06. Spring Boot  (0) 2021.05.27
05. Spring MVC  (0) 2021.04.18
반응형

 

 

 

1. Thymeleaf란?

: server-side java template engine

- JSP를 대체하는 템플릿 언어 및 엔진

- 모든 기능을 HTML element 의 속성으로 표현

 

 

2. JSP와 Thymeleaf 비교

 

 

3. Spring MVC Framework와의 연동

- Spring view resolution 방식에 따라 타임리프 템플릿을 뷰로 이용 가능하다.

- Form backing beans

- MessageSource 객체를 통해 Spring에서 관리되는 message file들에서 메시지 검색 및 출력

- SpEL 사용 가능

 

 

4. dependency 설정 (in Spring-Boot)

- auto-configuration

: 명시적인 bean 설정 필요없음

- Template file 기본 위치: src/main/resources/templates

 

 

5. Namespace 선언

 

 

 

6. 텍스트 출력

th:text 속성 : 주어진 식의 값을 tag의 content에 출력함(기존 값을 대체)

 

 

 

7. Standard Expression Syntax

 

 

8. 변수 식 : ${...}

 

사용 예)

 

 

9. 선택 변수 식 : *{...}

: 전체 context 대신 특정 객체에 대해 실행됨

1) th:object를 먼저 설정하고

2) *{...} 으로 뒤에 객체 선택

 

 

 

 

10. 메시지 식 : #{...}

 

 

11. Link URL : @{...}

: page, context, server, protocol에 대한 상대 경로 이용

 

 

 

 

12. Literals

 

 

13. Operations

 

 

14. 임의의 속성 설정(이미지)

 

 

 

15. 반복문 - th:each="..."

 

 

** 홀수번째만 속성을 적용하고 싶다면,

 

 

 

 

 

 

16. 조건문 ; th:if="...", th:unless="..."

 

 

 

 

17. Switch

 

 

 

18. Template layout

 

 

- id를 이용한 fragment 삽입

 

- 다양한 방식

 

 

 

- fragment는 params를 가질 수 있음

 

- th:remove

 

 

 

 

19. Form binding in Spring MVC

 

- checkbox

 

 

- radio button

 

- dropdown list

 

 

 

 

20. 검증 오류 메시지 출력

반응형

'Programming > Spring' 카테고리의 다른 글

09. Spring JDBC  (0) 2021.06.01
08. MyBatis  (0) 2021.06.01
06. Spring Boot  (0) 2021.05.27
05. Spring MVC  (0) 2021.04.18
04. bean life-cycle관리 / 외부설정 property / message source  (0) 2021.04.13
반응형

 

 

 

1) 최소 신장트리의 이해

신장트리란?

  • Spanning Tree, 또는 신장 트리 라고 불리움
  • 원래의 그래프의 모든 노드가 연결되어 있으면서 트리의 속성을 만족하는 그래프
  • 신장 트리의 조건
    • 본래의 그래프의 모든 노드를 포함해야 함
    • 모든 노드가 서로 연결
    • 트리의 속성을 만족시킴 (사이클이 존재하지 않음)

 

최소 신장트리란?

  • Minimum Spanning Tree, MST 라고 불리움
  • 가능한 Spanning Tree 중에서, 간선의 가중치 합이 최소인 Spanning Tree를 지칭함

 

최소 신장트리 알고리즘

  • 그래프에서 최소 신장 트리를 찾을 수 있는 알고리즘이 존재함
  • 대표적인 최소 신장 트리 알고리즘
    • Kruskal’s algorithm (크루스칼 알고리즘)
    • Prim's algorithm (프림 알고리즘)

 

 

2) 크루스칼 알고리즘

  • 모든 정점을 독립적인 집합으로 만든다.
  • 모든 간선을 비용을 기준으로 정렬하고, 비용이 작은 간선부터 양 끝의 두 정점을 비교한다.
  • 두 정점의 최상위 정점을 확인하고, 서로 다른 집합일 경우 두 정점을 연결한다. (최소 신장 트리는 사이클이 없으므로, 사이클이 생기지 않도록 하는 것임)
  • 탐욕 알고리즘을 기초로 하고 있음

 

 

 

3) 프림 알고리즘

  • 시작 정점을 선택한 후, 정점에 인접한 간선중 최소 간선으로 연결된 정점을 선택하고, 해당 정점에서 다시 최소 간선으로 연결된 정점을 선택하는 방식으로 최소 신장 트리를 확장해가는 방식
  • 크루스칼 알고리즘과 프림 알고리즘 비교
    • 둘다, 탐욕 알고리즘을 기초로 하고 있음 (당장 눈 앞의 최소 비용을 선택해서, 결과적으로 최적의 솔루션을 찾음)
    • Kruskal's algorithm은 전체 간선중에서, 가장 가중치가 작은 간선부터 선택하면서 MST를 구함
    • Prim's algorithm은 특정 정점에서 시작, 해당 정점에 연결된 가장 가중치가 작은 간선을 선택, 간선으로 연결된 정점들에 연결된 간선 중에서 가장 가중치가 작은 간선을 택하는 방식으로 MST를 구함

 

 

 

 

 

반응형
반응형

 

 

1. spring boot

: 스프링 프레임워크와 3rd party library들에 대한 복잡하고 반복적인(boiler-plate) 설정 코드를 최소화하고 비즈니스 로직 구현에 집중하게 함

- 내장된 Servlet container(Tomcat)를 이용하여 독립적으로 실행 가능한 Spring 애플리케이션 개발 가능 (JAR)

- 'starter' dependency를 이용한 build 의존성 설정 간소화

- 스프링 프레임워크와 3rd party library들에 대한 자동 설정(auto-config)

 

 

 

2. 스타터 의존성(starter)

spring-boot-starter 가 포함하는 의존성

1) spring-boot

2) spring-boot-autoconfigure

3) spring-boot-starter-logging

4) javax-annotation-api

5) spring-core

6) snakeyaml

 

spring-boot-starter-web이 포함하는 의존성

1) spring-boot-starter

2) spring-boot-starter-json

3) spring-boot-starter-tomcat

4) spring-web

5) spring-webmvc

 

+ spring-boot-starter-jdbc

 

 

 

 

3. 자동설정(auto-configuration)

: 어플리케이션 실행 시, classpath에 Spring module 또는 3rd party library가 존재할 경우,

관련된 bean들의 설정을 자동으로 실행한다.

 

예) 특정 database가 classpath에 있으면 그 database를 사용하는 Datasource bean들을 자동으로 실행한다.

예) spring-jdbc 모듈이 classpath에 있고, datasource bean이 설정되어 있으면 jdbcTemplate bean을 자동으로 설정해준다.

예) Spring-webmvc 모듈이 classpath에 있으면 DispatcherServlet, HandlerMapping Spring MVC의 기본 bean들을 자동 설정

예) Thymeleaf libraryclasspath에 있으면  template resolver, view resolver, template engine 등을 자동으로 설정(view로 이용 가능)

예) Spring Security 모듈이 classpath에 있으면 Spring Security 기반의 웹 보안을 위해 필요한 bean들을 자동 설정

예) Embedded Tomcatclasspath에 있으면 Tomcat servlet container를 시작함 (8080 port 사용)

 

아래와 같은 명시적인 설정을 하지 않아도 Spring boot가 필요한 bean들을 자동으로 생성 및 설정해준다.

 

 

 

 

 

4. Spring boot Actuator

: 실행중인 애플리케이션의 내부 상태를 조회하고 모니터링하는 기능

다양한 application metrics

1) 실행중인 process, thread의 상태

2) HTTP 요청

3) 메모리 사용량

4) data source 사용량(connection 개수)

5) GC 횟수 및 개수

- Web endpoint(Rest URL)이나 원격 shell을 통해 이용 가능하다.

 

 

 

 

5. @SpringBootApplication

어노테이션은 다음과 같은 세 가지 어노테이션을 포함한다.

1) @SpringBootConfiguration : @Configuration 기능 포함

2) @EnableAutoConfiguration : classpath 기반으로 자동 bean scan 실행

4) @ComponentScan : 현재의 package를 base로 자동 bean scan 실행

- sub package들도 모두 실행

 

 

 

 

6. shell/cmd에서 build 실행 방법

1) mvnw가 포함된 폴더로 이동

2) mvnw package

-> build 후 JAR 파일 생성

3) java -jar target/demo-0.0.1-SNAPSHOT.jar

-> 생성된 JAR 파일 실행

4) mvnw spring-boot:run

-> build 후 바로 실행

 

 

 

7. 추가적인 MVC 설정, 인터셉터 설정

 

 

 

 

 

 

 

반응형

'Programming > Spring' 카테고리의 다른 글

08. MyBatis  (0) 2021.06.01
07. Thymeleaf  (0) 2021.05.31
05. Spring MVC  (0) 2021.04.18
04. bean life-cycle관리 / 외부설정 property / message source  (0) 2021.04.13
03. Auto-wiring, Java code 기반 설정, annotation 기반 설정  (0) 2021.04.13

+ Recent posts