Spring 시작하기(SpringBoot)

Meteor(나무)
6 min readMar 18, 2019

--

사내에서 Spring 스터디가 생겨 스프링을 처음 접하는 사람들을 위해 개발환경 및 기본적인 키워드들을 전파하고자 내용을 정리했다.

먼저 사내에서는 “스프링5 레시피”라는 책을 보조교재로 가볍게 사용방법 및 전반을 흩어보고 “토비 스프링”으로 각각 항목들을 자세히 살펴볼 예정이다.

1. 개발툴

Eclipse를 사용하는 사람도 IntelliJ 를 사용하는 사람도 있지만 개인적으로는 Eclipse로 계속 개발해왔기 때문에 Eclipse로 가이드를 했다.

1.1 https://spring.io/ 스프링 공식홈으로, 프로젝트 리스트 목록, 개발 팁등 다양한 정보들이 포함되어있다

1.2 공식홈에 하단을 보면, tools 버튼이 있는데 해당 버튼을 누르면, https://spring.io/tools 로 이동하게 된다.

1.3 현재 기준, Eclipse, Visual Studio Code, Atom 등이 있지만 Eclipse를 받아 진행 하였다(Download STS4, Windows 64-bit).

2. 설치

2.1 윈도우 기준으로 zip 파일이기에 원하는 곳에 압축을 푼다.

2.2 압축을 푼 후 SpringToolSuite4.exe를 실행하기 이전에, JDK 설치가 되어있어야 한다.(JDK8 기준으로 진행하였다.)

2.3 SpringToolSuite4.exe를 실행한다.

3. 프로젝트 생성

3.1 STS3 시절에는 스프링 프로젝트 생성하는 방법들이 많았다(물론 지금도 자바프로젝트를 만들고 의존성만 추가하던지 여러 방법이 있지만)

sts3

3.2 STS4에는 Spring “Spring Starter Project”으로 스프링 프로젝트를 생성한다.

sts4

4. 간단히 돌려보기

4.1 “Spring Starter Project”를 통해 프로젝트 생성을 진행하다보면 사용할 관련 프로젝트를 선택하는 창이 나온다

4.2 대부분 Spring을 Web서비스를 하는데에만 사용하지만 서버 개발만 하는 분들을 위해 웹이 없는 자바 프로그램에서 Spring을 사용하는 방법과 웹개발을 하는 분들을 위해 Spring MVC 를 만들어 본다

4.3 먼저 일반 서버 개발자를 위해, 아무런 프로젝트를 선택하지 않고 프로젝트를 선택한다.

4.3.1 프로젝트를 생성하면 아래와 같이 프로젝트 디렉토리 구성이 되며프로젝트명에 대응하는 Application 소스하나도 생성된다.

4.3.2 소스에 SpringApplication.run(Application.class, args); 를 통해 스프링 엔진(IoC 컨테이너 및 임베디드 톰캣이 필요하면 톰캣을 띄운다던지)이 동작하게 되며(SpringApplication안에서 어떤 일들을 하는지는 차차 다루도록 하겠다.) 서버 개발을 위해 필요한 코드들은 Application 코드에 넣는것이 아니라 CommandLineRunner혹은 ApplicationRunner를 생성하여 실행하도록 할것이다.

4.3.2 ApplicationRunner를 간단히 구현하면 아래와 같고, Application을 구현하고 클래스에 @Component 어노테이션을 달아두면 component-scan시에 빈 대상으로 포함된다.

4.3.3 그리고 돌려보면 출력되는것을 볼수 있고

4.3.4 왜 이게 동작하시는지 궁금하신 분들을 위해 호출되는 부분을 첨부 하자면 SpringApplication의 안쪽 코드에 callRunners 쪽에서 ApplicationRunner나 CommandLineRunner로 되어있는 빈들을 실행해주는것을 볼수 있다.

4.3.5 마지막으로 System.out을 찍던 코드를 서비스 클래스로 분리하여 ApplicationRunner쪽에서 해당 서비스 클래스를 Injection 하여 사용하는 코드는 아래와 같다.

4.3.6 ServiceImple을 new 하지 않았음에도 정상적으로 동작하며 Injection이 잘 수행 되는것을 볼수 있다, Http를 사용하지 않고 TCP 서버를 개발하신다면 해당 코드에 Selector나 서버 코드를 넣어 개발하면 된다.

5.1 웹개발자의 경우 ApplicationRunner를 구현하기보다 Spring Mvc에 Controller를 주로 만들어 사용한다.

5.2 위에 아무것도 선택하지 않은것과 달리 Web->Web을 선택하고 진행하겠다(편의성을 위해 기존 프로젝트에 web만 추가하여 진행한다.).

5.3 Web을 추가 후 Boot를 실행하면 아까와 다른 부분들이 보인다

5.3.1 아까 추가해뒀던 ApplicationRunner가 잘 여전히 실행되지만 실행 후 프로세스가 내려갔던것과 달리 프로세스가 안내려가는것을 볼수 있다.

5.3.2 로그를 잘 살펴보면톰캣이 8080포트로 자동으로 뜬것을 확인할 수 있다.

5.3.3 localhost:8080으로 들어가면 해당 url을 처리할수 없어 에러가 발생하는것을 볼수 있다

5.3.4 Contoller를 하나 추가하고, / 를 처리할수 있는 @RequestMapping을 하나 추가 했다

5.3.5 다시 localhost:8080로 들어가면소스에 적어뒀던 String이응답으로 오는것을 확인할 수 있다.(뷰단과 연결하는 부분들 및 다른 부분들은 Spring MVC때 다루는걸로)

6. 이번은 개발환경 설치부터 실행하는것까지진행해봤다. 하나씩 하나씩 진행하며 의문드는 사항들 및 기본적인 내용들을 정리해나갈 예정이다.

--

--