Boot가 해 준 것 1, 모듈 설정
<parent>
<groupId>org.springframework.boot</groupId>
<ar:factId>spring-‐boot-‐starter-‐parent</ar:factId>
<version>1.2.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<ar:factId>spring-‐boot-‐starter-‐web</ar:factId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<ar:factId>spring-‐boot-‐starter-‐data-‐jpa</ar:factId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<ar:factId>spring-‐boot-‐starter-‐test</ar:factId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<ar:factId>spring-‐boot-‐starter-‐tomcat</ar:factId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<ar:factId>tomcat-‐embed-‐jasper</ar:factId>
<scope>provided</scope>
</dependency>
</dependencies>
표준 버전 모음
spring-‐mvc 등 웹 관련 모듈 자동 설정
spring-‐data-‐jpa,
JPA,
Hibernate 관련 모듈 설정
연관된 spring-‐orm,
커넥션 풀 등 모듈 설정
spring-‐test,
JUnit
등 관련 모듈 설정
임베디드 톰캣 관련 모듈 설정
10
Boot가 해 준 것 2, 스프링 설정
@SpringBootApplica7on
public
class
Applica:on
{
public
sta:c
void
main(String[]
args)
{
SpringApplica7on.run(Applica:on.class,
args);
}
}
//
@SpringBootApplica:on은 다음과 동일
//
@Configura:on
//
@EnableAutoConfigura7on
//
@ComponentScan
모든 설정 자동 생성!
- 스프링 MVC
-‐
DataSource
-‐
JPA,
JPA
TX,
Spring
Data
JPA
-‐
DispatcherServlet,
CharacterEncodingFilter
spring.view.prefix:
/WEB-‐INF/view/
spring.view.suffix:
.jsp
spring.datasource.url=jdbc:mysql://localhost/test?...
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver=com.mysql.jdbc.Driver
spring.jpa.database=MYSQL
JSP용 ViewResolver 설정
DataSource
설정
JPA 설정
12
Boot가 해 준 것 3, 서버 실행
• 임베디드 톰캣으로 실행
– mvn spring-boot:run
...
[INFO]
-‐-‐-‐
spring-‐boot-‐maven-‐plugin:1.2.0.RELEASE:run
(default-‐cli)
@
bootVersion
-‐-‐-‐
...
10:11:57.394
[app.Applica:on.main()]
INFO
app.Applica:on
-‐
Star:ng
Applica:on
on
MADVIRUSui-‐MacBook-‐Air.local
with
PID
15134
(...)
...
...
10:11:59.947
[app.Applica:on.main()]
INFO
o.s.b.c.e.t.TomcatEmbeddedServletContainer
-‐
Tomcat
ini:alized
with
port(s):
8080/hVp
10:12:00.219
[app.Applica:on.main()]
INFO
o.a.catalina.core.StandardService
-‐
Star7ng
service
Tomcat
10:12:00.221
[app.Applica:on.main()]
INFO
o.a.catalina.core.StandardEngine
-‐
Star7ng
Servlet
Engine:
Apache
Tomcat/8.0.15
...
...
10:12:05.708
[app.Applica:on.main()]
INFO
o.s.b.c.e.t.TomcatEmbeddedServletContainer
-‐
Tomcat
started
on
port(s):
8080/hIp
10:12:05.712
[app.Applica:on.main()]
INFO
app.Applica:on
-‐
Started
Applica:on
in
8.702
seconds
(JVM
running
for
12.428)
14
Boot가 해 준 것 4, 실행 가능 war 생성
• 패키징한 war를 java 명령어로 실행 가능
– mvn package
– java -jar target/myapp.war
• 임베디드 톰캣으로 실행
• 생성된 war를 일반 WAS에 배포해도 됨
• war가 아닌 jar 타입으로도 가능
15
운영지원 기능 : Actuator
• 서비스 상태(Health), 계측(Metric) 등 서비스
운영 지원을 위한 정보 제공 기능
• 다음 의존 추가로 자동 활성화
• 예, /health
<dependency>
<groupId>org.springframework.boot</groupId>
<ar:factId>spring-‐boot-‐starter-‐actuator</ar:factId>
</dependency>
17
Actuator가 제공하는 정보
• env : 스프링 Environment의 프로퍼티 목록
• health : 어플리케이션 Health 상태 정보
• metrics : 계측 정보
• mappings : 웹 경로 매핑 정보
• dump : 쓰레드 덤프
• beans : 빈 목록 정보
• trace : 최근 HTTP 요청 목록 표시(100개)
18
기타
• Remote Shell 기능 (Telnet로 연결해서 관리)
• 기본 로깅 설정 제공
• NoSQL 지원 (Redis, MongoDB, Solr 등)
• WebSocket 설정 지원
• JTA 설정 지원 (Atomikos, Bitronix)
• Maven과 Gradle 지원
19
참고자료
• Spring Boot 프로젝트
– http://projects.spring.io/spring-boot/
• 레퍼런스 문서가 좋음
• 도서: Learning Spring Boot
– http://goo.gl/Awzzoz
• Gradle 기반
• 현재 버전에 맞게 코드를 수정해야 할 부분이 간혹 있
지만 감을 잡기에 충분한 지식 제공
20