스프링 vs 스프링 부트
gradle 플랫폼
개발 환경 구축
- SpringBoot(STS4 Downloads)
(단 버전은 최상위 버전이 아니라 4.11.1릴리즈로 다운로드 합니다.(최신버전시 자동완성 불가))
https://spring.io/tools
- 마우스 휠을 아래로 내리다보면 PROJECT WIKI라는게 보이는데 클릭을 한다.
- 우측의 installation > Previous Releases Eclipse 를 클릭한다.
- Windows 에서 설치하려면 2번 째의 zip 파일을 다운로드 받는다.
- 압축을 푼다.
- STS4의 Workspace를 잡기위해 D 드라이브 아래에 D:\boot\work 폴더를 생성한다.
- STS4.exe 실행파일을 실행하여 Workspace를 잡아준다.
마켓플레이스에서 플러그인 java web developer 설치
- STS4에서 상단의 Help 메뉴의 Eclipse Marketplace...을 클릭한다.
- 아무검색을 하지 않아도 Eclipse Web Developer Tools 3.22가 보이는데 install 버튼을 클릭한다.
- default인 채로 두고 Confirm > 버튼을 클릭한다.
- 라이센스를 동의하고 Finish 버튼을 클릭한다.
- 설치가 완료되면 Software Updates 창이 뜨게되는게 Restart Now 버튼을 클릭한다.
STS4 초기 Encoding 설정
- Windows > Preferences 를 클릭한다.
- enco를 입력하여 Workspace, CSS Files, HTML Files 를 모두 utf-8로 변경한다.
hello, world를 찍어보자.
- Create new Spring Starter Project 를 클릭한다.
- 아래 빨간색 밑줄 친 부분만 변경한다.
- Spring Boot Version을 2.6.10로 변경하고 Developer Tools의 Spring Boot DevTools에 체크하고 Web의 Spring Web에 체크하고 Finish 버튼을 클릭한다.
** Spring Web은 Spring Boot에서 Web Project를 하기위해 반드시 체크해주어야하며 Spring Boot DevTools는 Web을 실행하기위해 필요한 도구를 불러오기때문에 마찬가지로 반드시 체크해주어야한다.
- 만든 프로젝트의 각 패키지, 폴더 등이 어떤 역할을 하는지 알려준다.
** 스프링 부트는 프로젝트를 실행할 수 있는 Server인 Tomcat이 내장되어있기때문에 따로 다운로드할 필요가 없다.
- build.gradle 파일은 기본적인 버전의 설정과 중앙 Repository에서 다운받아서 사용할 수 있는 dependencies를 추가할 수 있는 설정파일이다.
- application.properties 파일에는 서버의 포트번호를 지정할 수 있다.
- com.simple.boottest.controller 패키지를 생성하고 TestController 클래스를 생성한다.
- TestController 클래스에 "hello, world"를 출력
** @RestController는 지금은 간단하게 Ajax 통신과같이 비동기 통신으로 데이터를 주고 받을 수 있도록하기 위한 어노테이션이라고만 생각하자. 추후에 제대로 사용하게될 때 추가적으로 업로드할 예정이다.
- Spring Boot App을 실행한다.
- Spring Boot 는 기본적으로 views가 지정되어있지않기때문에 브라우저에서 해당경로로 직접 url창에 입력하여 들어가야한다.
** 스프링부트는 서버를 한 번 실행시켜놓고 코드의 수정이후에 또다시 그냥 서버 실행을 하지않고 반드시 서버를 Stop 상태로 되돌린 후에 다시 Start 시켜야한다. 아니면 Restart를 해야한다.
(실행을 한 번 하고나서 바로 다시 서버를 실행하게되면 이미 서버가 실행되고있다는 에러가 발생하기때문이다. 아래 그림은 두 번 연속해서 서버를 실행했을 때 나타나는 에러 메세지이다.)
**. STS4 우측하단부에 Enable / Disable Ansi Console 이라는 아이콘을 한 번 클릭하여 사용하지않는다.(Ansi Console을 사용 중이면 렉 유발 이슈가 발생하는 경우가 있기때문이다.)