Spring Boot Hello World
Hello World 생성하기
Gradle 프로젝트를 생성한다.
디렉터리 spring-boot-hello-world를 생성하고, Gradle 프로젝트를 초기화한다.
$ mkdir spring-boot-hello-world
$ cd spring-boot-hello-world
Gradle 프로젝트를 초기화한다.
$ gradle init
BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed
소스 코드 자바 디렉터리를 만든다.
$ mkdir -p src/main/java/sample/springboot
소스 코드를 작성한다.
build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.6.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
}
jar.baseName = 'spring-boot-hello-world'
src/main/java/sample/springboot/Main.java
package sample.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
try (ConfigurableApplicationContext ctx = SpringApplication.run(Main.class, args)) {
Main m = ctx.getBean(Main.class);
m.hello();
}
}
public void hello() {
System.out.println("Hello Spring Boot!!");
}
}
디렉터리 구조
$ tree
.
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
└── main
└── java
└── sample
└── springboot
└── Main.java
어플리케이션 실행
Gradle로 실행
$ gradle bootRun
> Task :bootRun
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.6.RELEASE)
(생략)
Hello Spring Boot!!
(생략)
BUILD SUCCESSFUL in 20s
3 actionable tasks: 3 executed
빌드 실행
$ gradle build
$ java -jar build/libs/spring-boot-hello-world.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.6.RELEASE)
(생략)
Hello Spring Boot!!
(생략)
설명
build.gradle 설정 Spring Boot 용 Gradle 플러그인이 포함되어 있기 때문에 처음에 이를 로드한다.
build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.6.RELEASE")
}
}
apply plugin: 'org.springframework.boot'
그리고 일반적인 Java 프로그램을 만들 뿐이라면, spring-boot-starter에 종속(dependencies)되도록 추가한다.
build.gradle
repositories {
mavenCentral()
}
dependencies {
compile 'org.springframework.boot:spring-boot-starter'
}
Spring Boot 기동
Spring Boot의 기동은 SpringApplication 클래스를 사용한다. 가장 간단한 방법은 SpringApplication#run (Object, String …)을 사용하는 것이다.
Main.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
try (ConfigurableApplicationContext ctx = SpringApplication.run(Main.class, args)) {
Main m = ctx.getBean(Main.class);
m.hello();
}
}
public void hello() {
System.out.println("Hello Spring Boot!!");
}
}
run()
메소드의 첫번째 인수는@EnableAutoConfiguration
으로 어노테이션 클래스의 Class 객체를 건네 준다.- Main 클래스는
@SpringBootApplication
어노테이션되어 있지만, 이것은@Configuration
,@EnableAutoConfiguration
,@ComponentScan
3개의 클래스를 어노테이션 설정한 것과 동일하다. @Configuration
은 Spring의 다양한 설정을 Java 코드상에서 할 수 있도록 한 어노테이션이다.- 예전 Spring은 XML으로 설정을 썼지만, 지금은 Java 코드에서 설정하는 것이 주류를 이루고 있다 같다.
@EnableAutoConfiguration
는 Spring 설정을 자동화하기 위한 어노테이션이다.- 이 종속성을 추가하는 것만으로 Spring MVC 등의 라이브러리를 설정 기입없이 사용할 수 있게 된다.
@ComponentScan
는 DI 컨테이너가 관리하는 Bean을 자동 등록하는 어노테이션이다.- 이제 주석 된 클래스를 기점으로 부하의 패키지를 재귀적으로 검색하여
@Component
어노테이션이 부여 된 클래스를 Bean으로 컨테이너에 등록한다.
- 이제 주석 된 클래스를 기점으로 부하의 패키지를 재귀적으로 검색하여
- 이 3 개의 어노테이션은 대체로 함께 사용하는 경우이 많기 때문에,
@SpringBootApplication
를 사용하면 조금 편해진다.
- Main 클래스는
- 두 번째 인수는 커멘드 라인의 인수를 전달한다.
Gradle에서 실행 빌드
어플리케이션의 기동은 spring-boot-gradle-plugin이 제공하는 bootRun 테스크를 사용한다.
jar 생성은, 보통의 build 테스크로 가능하다.
생성된 jar는 일반적으로 jar -jar <jar 파일>
에서 실행할 수 있다.
소스 코드
최종 수정 : 2024-03-09