본문으로 바로가기

Spring Boot로 Hello World 출력하기


Spring Boot가 '된다', '쉽다', '다 해준다' 이런 이야기를 많이들 하시는데 특정 예제는 잘 실행되는데 조금만 내가 원하는 대로 바꾸어 볼려고 하면 실행조차 안되는 경우가 많다.

Spring Boot는 많은 기술을 간단하게 표현해놓은 것이기 때문에 어떻게 작동하는지 원리를 잘 모르면 오히려 더 어렵다.

그리고 우리 개발자들은 Hello World를 출력 해보면서 구조에 대해서 코드와 실행 결과를 피드백 삼아서 이해를 하는데 spring web은 예제가 많은데 hello world만 출력하는 예제는 아직 찾지를 못했다. 그래서 이 포스트를 쓴다.


순서는 아래와 같이 진행 할 예정이다.

1.Gradle로 java 프로젝트 빌드

2.spring boot 라이브러리 import하기

3.프로젝트 구조 만들기

4.ApplicationContext에 빈으로 등록하고 실행


인텔리J를 실행한다. 이 화면이 안나오고 코딩하는 화면이 주로 나오는데 File-New-Project하면 된다.

이 화면이라면 Create Project를 누른다.


좌측에 Gradle을 선택 하고 Next를 누른다.


Group id, Artifact id를 적당히 넣는다.

나는 spring_boot_helloworld_01이라고 둘다 넣었다.


Use default gradle wrapper로 해도 되고 gradle을 받아놓은게 있다면 User local gradle distribution을 해도 된다.


Project name, project location을 적절하게 지정 해준다.

나는 c:\practice\spring_boot_helloworld_01 에 프로젝트를 생성했다.


생성하면 좌측 프로젝트 익스플로러에 파일들이 만들어졌다.

build.gradle을 열어보자.


이게 기본 값이야. 그럼 spring boot 라이브러리를 추가 해보자.


구글에서 maven spring boot test 라고 검색하면 나오는 맨 위로 들어가면 되

왜 spring boot test로 시작하냐면 많이 쓰는 spring boot web이나 spring boot data jpa 이런거는 'hello world'를 띄우기에는 추가로 설정해줘야 하는게 있기 때문이야.


버젼을 1.5.1.RELEASE 를 눌러.



이 화면이 나오면 Gradle탭을 누르고 코드를 복사해.


아까 초기 설정 되어있는데에 붙여넣기 해. testCompile 아래에 넣으면 된다.


프로젝트 구조를 만들어보자.

좌측 프로젝트 익스플로러에서 New - Directory를 눌러


src/main/java 라고 넣어


디렉토리 만들어진데다가 New - Package눌러서 com이라고 만들어


만든 패키지 com에 Java클래스를 만들어


이름은 Application으로 만들어


이렇게 만들어 졌어.

그래들로 라이브러리 불러올려면

그래들 플러그인에서 새로고침을 눌러야돼.


우측에 그래들 누른담에.

그래들 플러그인의 좌측 상단에 파란색으로 나오는 새로고침 버튼 눌러.

이게 안나오면 좌측 하단에 네모난 버튼을 눌러.

새로고침이 완료되면 우측 하단에 프로그레스바가 없어져.


@SpringBootApplication 어노테이션을 붙여주고

main 메소드 만들고

SpringApplication.run을 해줘.

소스코드는 다음과 같아.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
/**
 * Created by kyeongrok.kim on 2017-02-14.
 */
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}
 
cs


그리고 실행을 해보면 콘솔창에 '스프링 부트'라고 배너도 나오고 텍스트가 나와.

일단 아무것도 안만들고 스프링 부트만 실행 했으니까 이렇게 나오는거야.

여기까지 잘 나왔으면 세팅은 잘 한거구.


이제 hello world를 출력하는 클래스를 만들어보자.

'hello world'를 main method에서 system.out.println 으로 출력하는게 가장 편하긴 한데

이건 스프링이기 때문에

1.클래스 만들고

2.설정 클래스 만들고

3.ApplicationContext에서 불러오고

4.실행하고

이렇게 4단계를 거쳐서 찍어야해.

무슨 hello world 찍는데 이렇게까지 해야하냐고 할 수도 있는데

이 예제는 스프링으로 hello world 띄우는 거니까 목적에 충실하도록 할게.


com아래에 패키지를 하나 만들어줘.

구조는 최대한 여기에 써놓은 대로 만드는게 좋아.

왜냐하면 @SpringBootApplication이라는 어노테이션은 @ComponentScan이라는 어노테이션을 포함하고 있어.

그런데 @ComponentScan이라는 애는 Application.class 아래에 있는 패키지를 검색해서 @Configuration, @Component등의 어노테이션이 붙은 클래스를 찾아서

ApplicationContext에 Bean으로 등록을 하기 때문이야.


config라는 패키지를 만들어주고



패키지 안에 ApplicationConfig라는 클래스를 만들어줘.


그러면 이렇게 만들어졌음.


그리고 com패키지 아래에 component라는 패키지도 만들어줘.




component패키지 아래에 HelloPrint라는 Class를 만들어줘



HelloPrinter 클래스의 내용이야.

hello를 출력하는 method한개있어.


이거는 위에서 만든 ApplicationConfig클래스의 내용이야.

@Configuration애노테이션과 @Bean 애노테이션이 붙어있어.

소스코드는 아래와 같아.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.config;
 
import com.component.HelloPrinter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
/**
 * Created by kyeongrok.kim on 2017-02-14.
 */
@Configuration
public class ApplicationConfig {
    @Bean
    public HelloPrinter helloPrinter(){
        return new HelloPrinter();
    }
}
cs



이제는 스프링 부트로 띄워보자

Application.java에

SpringApplication.run(Application.class) 로 돼있는 부분을

ApplicationContext context = SpringApplication.run(Application.class) 이렇게 바꾸고

.getBean을 해서 HelloPrinter의 인스턴스를 생성하고

hello를 출력해보자.


소스코드는 아래와 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com;
 
import com.component.HelloPrinter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
 
/**
 * Created by kyeongrok.kim on 2017-02-14.
 */
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(Application.class);
        HelloPrinter helloPrinter = context.getBean(HelloPrinter.class);
        helloPrinter.printHello();
    }
}
 
cs


여기서 일어나는 일을 간략히 알아보면
1.@SpringBootApplication 어노테이션 안에 있는 @ComponenetScan이 Application.java가 있는 com package의 하위 패키지를 검색을 한다.
2.AppConfig.java에 @Configuration 어노테이션을 보고 그 안에 있는 @Bean을 찾아서 ApplicationContext에 Bean으로 등록한다.
3.main() 메소드에 HelloPrinter 를 context에 들어있는 HelloPrint Bean을 꺼내서 만든다.
4.hello를 출력한다.


end.





댓글을 달아 주세요