STS 에 언제부터인가 포함되어 있던 spring-boot 를 한번 테스트해보기로 했다.
Spring Boot 는 링크에서도 간단히 설명이 나와있지만, 어떤 xml 설정이 필요없고 독립형(stand-alone) 프로그램을 지원하고 웹 컨테이너를 내장해서(embbed) tomcat, jetty 같은 외부 WAS 없이도 웹앱을 실행할 수 있다.
"Package Explorer" - "NEW" - "Spring Starter Project" 를 선택하면 프로젝트 이름을 "demo" 로 해서 그룹, artifact, 패키지 이름, 그리고 style 이라고 해서 기본이 되는 모듈(Web, WebSocket, JDB, JPA, AMQP, ...)을 선택할 수 있다.
일단 "Web" 을 선택하면 maven 모듈들이 잔뜩 설치되고, 자동 생성된 Application 클래스를 확인해보면 main() 이 만들어진것을 확인할 수 있다.
package demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan @EnableAutoConfiguration public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
간단히 "/" 를 라우트하는 코드를 추가하면
package demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Configuration @ComponentScan @EnableAutoConfiguration @Controller public class Application { @RequestMapping("/") @ResponseBody String home() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
STS 에서 "Run" - "main" 을 하면 다음과 같은 배너와 함께 8080 포트를 listening 한다는 메시지가 나온다.
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.1.4.RELEASE)
2014-07-09 16:09:56.140 INFO 7428 --- [ main] demo.Application : Starting Application on Jeon-ui-iMac.local with PID 7428 (/Users/firstboos/Documents/workspace-sts-3.5.1.RELEASE/demoWeb/target/classes started by firstboos in /Users/firstboos/Documents/workspace-sts-3.5.1.RELEASE/demoWeb)
2014-07-09 16:09:56.185 INFO 7428 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@49684e94: startup date [Wed Jul 09 16:09:56 KST 2014]; root of context hierarchy
2014-07-09 16:09:56.625 INFO 7428 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'beanNameViewResolver': replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]]
2014-07-09 16:09:57.376 INFO 7428 --- [ main] .t.TomcatEmbeddedServletContainerFactory : Server initialized with port: 8080
2014-07-09 16:09:57.551 INFO 7428 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat
웹 브라우저에서 localhost:8080 으로 접근하면 "Hello, World!" 가 보인다.
command line 에서 실행하기 위해서는 mvn 으로 패키지 빌드후, 실행할 수 있다.
# mvn package
# mvn spring-boot:run
jar 로 패키지를 생성해서 실행할 수 있다.
# pwd
/Users/firstboos/Documents/workspace-sts-3.5.1.RELEASE/demo
# mvn package
# java -jar target/demo-0.0.1-SNAPSHOP.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.1.4.RELEASE)
2014-07-09 16:30:22.432 INFO 7523 --- [ main] demo.Application : Starting Application on Jeon-ui-iMac.local with PID 7523 (/Users/firstboos/Documents/workspace-sts-3.5.1.RELEASE/demoWeb/target/demo-0.0.1-SNAPSHOT.jar started by firstboos in /Users/firstboos/Documents/workspace-sts-3.5.1.RELEASE/demoWeb)
2014-07-09 16:30:22.488 INFO 7523 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@294c4c55: startup date [Wed Jul 09 16:30:22 KST 2014]; root of context hierarchy
....
참고 :
'Engineering > Spring' 카테고리의 다른 글
[SpringBoot] ALLOW_COMMENTS 오류 (1) | 2021.04.09 |
---|---|
jar 파일 외부에서 프로퍼티 이용하는 방법(spring) (0) | 2015.10.12 |
XML 기반의 Resource Bundle, PropertyPlaceHolder 사용하기 (0) | 2013.12.30 |
Spring 에서 MailSender 를 이용한 send mail (0) | 2013.12.26 |
Spring 에서 트랜잭션 관리 (0) | 2013.12.11 |