스프링을 공부해야 하는 이유 : 실무에서 제대로 동작하는 웹 어플리케이션을 개발하기 위해서
IDE : IntelliJ
김영한님의 주변의 잘하시는 서버 개발자분들이 대부분 인텔리제이를 사용함
단축키부터해서 편리한 점이 많음
스프링부트 스타터를 사용하여 스프링 프로젝트 생성
예전에는 스프링 프로젝트를 밑바닥부터 다 만들었지만 요즘은 스프링부트 스타터를 이용하여 간편하게 프로젝트를 생성함
Maven vs gradle
둘다 라이브러리와 라이프사이클을 관리해주는 툴
요즘은 gradle을 많이 사용함
레거시로 maven 이 남아있는 경우도 가끔 있음
버전 : snapshot 은 만드는 중, m1이나 이런게 괄호에 있는것은 정식 릴리즈된 버전이 아님
group에는 기업 도메인 명을 작성
artifact에는 결과물 (프로젝트명)
dependencies
스프링에서 사용할 라이브러리 선택
Spring web : 웹 프로젝트를 만들기 위함
thymeleaf : html을 만들어 주는 템플릿 엔진
프로젝트를 처음 열면 외부에서 라이브러리를 다운 받음
Src 하위에 main과 test로 나누어져있음
Test 코드가 그만큼 중요함
main의 하위에 resources에는 java파일을 제외한 설정 파일이나 html 파일 등이 들어감
mavenCentral() : mavenCentral에서 라이브러리 다운로드 하도록 설정
main을 실행시키면 Tomcat started on port(s): 8080으로 서버가 실행되고 있는 포트를 출력함
tomcat이라는 웹서버를 내장하고 있어서 이를 실행시키면서 실행됨
intelliJ에서 실행시킬때 자바에서 직접실행되는 것이 아니라 gradle을 통해서 실행되는 경우가 있는데 이 경우 좀 느릴수가 있음 preperence 에서 설정이 필요함
gradle은 dependencies에 작성한 라이브러리 뿐만 아니라 해당 라이브러리와 의존성이 있는 라이브러리를 모두 다운로드 함
의존관계는 왼쪽 하단의 버튼을 누르거나 커멘드 두번 눌러서 오른쪽 상단에 gradle 눌러서 확인 가능
예전에는 웹서버(was)를 서버에 직접 설치하고 거기에 자바코드를 밀어넣는 식으로 진행
요즘은 소스 라이브러리에서 웹서버를 내장하고 있음
자바 메인 메소드만 실행해도 웹서버를 실행 가능
logback,slf4j : 로깅에 사용하는 라이브러리
Junit : 테스트 코드 작성을 위해 사용하는 라이브러리
Spring test : 스프링과 통합하여 테스트를 위한 라이브러리
스프링 부트 웰컴 페이지 기능 : static/index.html 을 작성하면 기본 페이지로 제공
스프링 부트는 static에 위치한 index.html을 먼저 찾고 그다음 index.html을 찾음
spring에서 controller는 @Controller 어노테이션이 필요함
@GetMapping(“hello”) 으로 웹어플케이션에서 /hello로 오면 mapping 시켜줌
html에서 thymeleaf 문법 사용하기 위해서는
html xmlns:th="http://www.thymeleaf.org" 을 html 파일에 설정해줘야함
model에 data = “hello!!” 으로 설정 해주면 리턴하는 html 파일에서 data에 hello!! 가 들어감
컨트롤러에서 리턴한 문자열을 뷰 리졸버가 resource/templates/에서 찾아서 html 파일 리턴
빌드하고 실행시키는 방법
루트 디렉토리에서 ./gradlew build 하면 ./build/libs 에 jar 파일이 빌드됨
java -jar hello-spring-0.0.1-SNAPSHOT.jar 으로 실행가능
서버 배포시 jar 파일만 서버에 올려서 실행 시키면 됨
빌드 다시하기 ./gradlew clean build