Spring Boot 소개 및 HelloWorld 작성
- Spring Boot Application 작성 하기
- Spring Boot(Jar)를 War 배포/전환 하기
Spring은 수년간 좋은 프레임웍이었지만 결점은 거의 없었다. 이 강좌에서, Spring Boot의 소개는 Spring Boot가 얼마나 결점들을 해결하면서 최신 현대적인 소프트웨어 아키텍처를 지원하는지를 보여준다.
저자는 2014년말경 부터 spring boot를 사용했으며, 최신버젼 1.3.3으로 이 문서를 작성했다.
What is Spring Boot ?
한 문장으로, Spring Boot는 Spring Framework에서 XML Configuration을 빼고, 통합된 서버를 제공한다.
Spring Boot Components
- Spring Boot Auto Configure
스프링 프로젝트를 다양하게 자동 구성하는 모듈. Batch, Data JPA, Hibernate, JDBC등의 프레임웍을 감지할 수 있다. 감지하게 되면, 자동 구성을 하고, (생성된) 프레임웍은 다소 필수적인 기본(구성)값을 갖는다.
- Spring Boot Core , Spring Boot CLI , Spring Boot Actuator
이 프로젝트가 추가 되면, 어플리케이션을 확실하게 기업 특성(보안, 지표, 기본 에러 페이지등)이 가능하게 한다.
- Spring Boot Starters , Spring Boot Tools
How to use Spring Boot
다른 글에서 어떻게 사용하고 어떻게 Spring Boot를 실행하는지를 보여주겠지만, 여기서는
아래 절차를 따라하는 것이 필요하다.
- 초기 설정을 생성하기 위해 스프링 초기화를 사용할 수 있다.
: start.spring.io를 방문하거나 이클립스/IDEA에서 쓸 수있는 STS(Spring Tool Suite)를 사용해서 Spring Boot Starters를 선택한다.
: start.spring.io를 사용하게 되면, zip파일을 다운로드해야 하고, workspace를 구성해야한다.
- 빌드Tool 로써 Maven 또는 Gradle를 선택할 수 있다.
- 필요한 code를 추가한다.
- mvn clean package를 사용하거나 이클립스/IDEA에서 빌드하고 jar를 생성하라.
- 기본으로 JAR는 통합 Tomcat server에 포함되고, JAR를 실행하므로써, 프로그램을 사용할 수 있다.
http://www.adeveloperdiary.com/java/spring-boot/an-introduction-to-spring-boot/
How to Create Spring Boot Application Step By Step
1) Create Spring Boot Application using start.spring.io
- 선택 : Web(필수), Actuator(옵션)
옵션 선택후에 Generate Project를 누르면, 프로젝트가 다운로드 시작된다.
다운로드 완료후에 풀고, import를 한다.
* Eclipse에서 생성시 선택 화면
* Dependencies는 필요한 부분을 선택
2) Controller 작성 및 실행
@RestController
return "helloworld!"; } |
3) Run Spring Boot Application in Eclipse ( Run As -> Spring Boot App )
* 실행 오류 : Dependencies에서 DB(MySQL, PostgreSQL)를 선택후에 설정을 하지 않는
경우에는 다음과 같은 에러가 발생한다.
***************************
APPLICATION FAILED TO START
***************************
Description:
Cannot determine embedded database driver class for database type NONE
- application.properties에 아래와 같은 항목과 알맞게 우측 내용을 채워야 한다.
#DataSource settings : set here configuration for the database connection
#spring.datasource.url=
#spring.datasource.username=
#spring.datasource.password=
#spring.datasource.driver-class-name=org.postgresql.Driver
* Spring Boot, jar -> war 배포로 변경
- Spring Boot Application -> Tomcat에 war 배포 하기
1) Application을 SpringBootServletInitializer으로 extends한다.
-- org.springframework.boot.context.web.SpringBootServletInitializer
-- org.springframework.boot.web.support.SpringBootServletInitializer
@SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }
2) pom,xml에서 war로 packing를 변경한다
<packaging>war</packaging>
3) pom.xml에서 tomcat dependency를 추가한다. ( spring-boot-starter-tomcat )
<dependencies> <!-- … --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <!-- … --> </dependencies>
- 추가후 Maven -> Update Project 실행 필요
* 실행 오류 : The selection cannot be run on any server.
- tomcat server선택시에 상단의 붉은색 메시지 부분을 확인 후에 해제
해제는 Project Facets
( start.spring.io 의 default설정 값으로 보임 )
참고 :
http://www.adeveloperdiary.com/java/spring-boot/create-spring-boot-application-step-step/ ,
[블로그개발_01] STS로 Spring Boot 웹 프로젝트 시작하기
http://camon85.blogspot.co.id/2015/12/spring-boot-war.html,
Spring Boot war배포
How to deploy a simple Spring Boot (with Gradle build system) to Apache Tomcat (real server, not embed server)?
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
package hello;
public class Greeting {
private final long id;
private final String content;
public Greeting(long id, String content) {
super();
this.id = id;
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
}
package hello;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController {
private static final String template = "Hello, %s";
private final AtomicLong counter = new AtomicLong();
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}
Why am I getting “Project facet Cloud Foundry Standalone Application version 1.0 is not supported”?
'Web Tech. > Spring Framework' 카테고리의 다른 글
Spring Boot 소개 (2) - Actuator (0) | 2016.09.22 |
---|---|
이클립스, Spring Starter Project , HTTP response code : 403 (0) | 2016.09.22 |
Java Spring 4 MVC , Apache Tiles 3 (0) | 2016.09.20 |
Maven, ADD Dependency (pom.xml 종속성 추가하기 ) (0) | 2016.09.19 |
Admin LTE (0) | 2016.09.16 |