자기 소개
정성용
Spring camp 2014
bungubbang57@gmail.com
!
SK Planet (2012 ~ )
Commerce Platform팀
공채 1기
Spring Boot - Goal Spring camp 2014
・ 모든 스프링개발을 정말 빠르고 다양한방법으로 시작할수 있도록 한다.
・ 부트 그대로 바로 사용할수도, 자신의 목적에 맞춰 다양하게 활용할 수도
있게 한다.
・ 어플리케이션의 기능적 요소 뿐만 아니라 임베디드 서버, 시큐리티, 헬스
체크, 외부 설정 연계등 개발의 모든 사이클을 제공한다.
・ 설정을 위해 Code Generation을 하지 않으며, XML이 필요하지도
않다.
Spring Boot 특징 Spring camp 2014
1. 어플리케이션 로직에 집중 할 수 있도록 과감하게 모든 설정을 없애버렸다.
2. Bean 중심의 설계를 바꿔 놓았다.
・ 설정을 변경하기 위해 Bean을 선언 하는것 뿐만 아니라 Property로 원하는 부분만 변
경 가능하다.
3. 스프링 개발의 지침서가 될 수 있다.
・ 스프링 메인 개발자들이 어떤 프로젝트를 장려하는지 어떻게 설정하고 활용하는지 boot
소스를 보면서 많은 참고를 할 수 있다.
Spring Boot Spring camp 2014
누가 사용 하면 좋을까요?
- 스프링을 완전 처음 시작하시는 분
- Boot 라이브러리 소스를 직접 파헤쳐 볼 수 있으신 분
!
어떤 상황에서 사용 하면 좋을까요?
- 익숙하지 않는 Spring 모듈을 사용할때
- 스프링으로 시작하는 모든 프로젝트
- 소규모 프로젝트에만 적용가능한건 오해
- 빠르지만 무한한 확장성이 장점
Spring Boot Example Spring camp 2014
Spring MVC
Spring Data JPA
Thymeleaf
Logback
Junite
웹 프로젝트 시작하기
with @EnableAutoConfiguration
Example Spring camp 2014
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.0.2.RELEASE</version>
</parent>
Pom.xml
<dependencies>
<dependency> // 개별 dependency 선언
<artifactId>spring-boot-starter-data-jpa</artifactId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<artifactId>spring-boot-starter-web</artifactId>
<artifactId>hsqldb</artifactId>
</dependency>
<dependencies>
Example Spring camp 2014
Domain
People
Repository
PeopleRepository
Controller
PeopleApiController
ThymeLeafController
Boot
BootSampleApplication
Example Spring camp 2014
@Entity // 일반적인 JPA Entity 설정
public class People {
@Id
@GeneratedValue
private Integer id;
!
private String name;
private Integer age;
// Constructor, Getter, Setter …
}
Example Spring camp 2014
@Repository // 일반적인 JpaRepository 설정
public interface PeopleRepository
extends JpaRepository<People, Integer> {
}
Example Spring camp 2014
@RestController // 일반적인 Controller 설정
@RequestMapping(value = "people")
public class PeopleApiController {
!
@Autowired PeopleRepository peopleRepository;
!
@RequestMapping(method = RequestMethod.GET)
public List<People> peopleList() {
return peopleRepository.findAll();
}
// POST, PUT, DELETE
}
Example Spring camp 2014
@ComponentScan
@EnableAutoConfiguration // 단 하나의 Boot 설정 !
public class BootSampleApplication {
public static void main(String[] args) throws Exception {
SpringApplication
.run(BootSampleApplication.class, args);
}
}
Spring Boot Spring camp 2014
빌드 시스템 (Java 1.6+)
Gradle, Maven, Ant
핵심 기능
Core Features
SpringApplication | External Configuration | Profiles | Logging
Web Application
MVC | Embedded Containers
Working with data
SQL | NO-SQL
Testing
Overview | Boot Applications | Utils
Extending
Auto-configuration | @Conditions
Spring Boot Spring camp 2014
Property Configuration
1. @PropertySource 설정
2. Java system, OS properties
3. Command Line arguments
4. application.properties (YAML포함)
- 위치 : /config, classpath:, classpath:/config
- profile : application-{profile}.properties
!
우선순위
Command Line > System properties
> @PropertySource > application.properties
!
참고 링크
http://docs.spring.io/spring-boot/docs/current/reference/
htmlsingle/#common-application-properties
Spring Boot Spring camp 2014
Actuator
- 스프링 어플리케이션을 조작하거나 상태를 알게 해주는 starter
/autoconfig 자동 설정되거나 설정되지 않는 목록들과 그 이유들
/beans 어플리케이션에서 선언한 Bean 목록
/configprops Properties 로 선언된 목록들
/dump Thread dump
/env 시스템 환경 및 어플리케이션 환경 설정 목록
/health 어플리케이션 상태 체크
/info 어플리케이션 정보
/metrics 어플리케이션의 매트릭스 정보
/mappings 어플리케이션의 매핑 정보
/shutdown 어플리케이션 종료
/trace 어플리케이션 접속 정보
Spring Boot Spring camp 2014
Spring MVC
!
1. 기본 설정
- Bean : ContentNegotiatingViewResolver, BeanNameViewResolver,
HttpMessageConverters(JSON, XML) …
- filter : HiddenHttpMethodFilter, WebRequestTraceFilter …
2. Resource
- /static, /public, /resources, /META-INF/resources in classpath
- favicon.ico 도 기본 지원
3. View template지원
- Thymeleaf, freemarker, velocity, groovy-templates
- 기본 폴더 : classpath:/templates/
Spring Boot Spring camp 2014
Logging
!
1. Log4J와 Logback 지원
- spring-boot-start-log4j (Log4J)
- spring-boot-start-logging (Logback)
2. 기본적으로 rotating, 10Mb file size
3. spring-starter-web 는 기본적으로 Logback 지원
- temp/spring.log
- application.properties의 logging.path로 변경 가능
- logback.xml 설정 가능
- 기본이 INFO, --debug로 수정 가능
Spring Boot Spring camp 2014
Servlet Container
!
1. Embedded
- Tomcat7, Jetty
2. Properties 설정
-server.port
-server.address
-server.sessionTimeout
3. extends EmbeddedServletContainerCustomizer
4. @Bean EmbeddedServletContainerFactory
Spring Boot Spring camp 2014
Database
!
1. Embedded database support
- H2, HSQL, Derby (dependency에 추가만)
2. Properties 설정
spring.datasource.url=jdbc:sql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driverClassName=com.sql.driver
!
3. @Bean DataSource
Spring Boot Spring camp 2014
spring-data-jpa
1. Properties 설정
- spring.jpa.hibernate.ddl-auto: create-drop
- spring.jpa.generate-ddl: false
- spring.jpa.show-sql: true
!
2. 초기 데이터 설정
- import.sql, schema.sql
- flyway, Liquibase 지원
spring-data-mongo
- spring.data.mongodb.host=mongoserver
- spring.data.mongodb.port=27017
Spring Boot Spring camp 2014
Testing
!
1. spring-boot-starter-test
- scope: test
- MVC test, Junit, Hamcrest, Mockito
- @SpringApplicationConfiguration