폴더 & 파일 설명
- .Idea : intelli J가 사용하는 설정 파일
- src
- main
- resources : 자바 파일 제외한 파일들 (xml, html, properties, 설정 파일 등)
- test : 테스트 코드 소스들이 들어감.
- build.gradle : plugin 에 우리가 spring boot에서 프로젝트 선택 부분에서 선택한 버전, 언어 등이 들어간다.
- sourceCompatibility : 자바 버전
- dependencies : dependencies에서 선택했던 것과 test library 들어가 있다.
- repositories: 현 강의에서는 mavenCentral()이 들어가 있는데(공개된 사이트), dependencies에 있는 라이브러리를 여기에서 다운로드한다. 필요하면 특정 사이트 url을 넣을 수 있다.
- .gitignore : 깃에는 필요한 소스코드만 올라가고 나머지 빌드된 결과물 이런 거 올라가면 안 되니, 그런 것들을 설정해준다.
* IntelliJ Gradle 대신에 자바 직접 실행하기
preference -> build tools -> gradle에서 build and run using과 run tests using을 IntelliJ로 바꿔주면 Gradle을 통해서 실행하지 않는다.(Gradle을 통해서 실행하면 좀 느릴 수 있음)
라이브러리 살펴보기
* Gradle은 의존관계가 있는 라이브러리를 함께 다운로드한다.(-> 한 라이브러리를 가져오면, 그 라이브러리와 의존 관계인 라이브러리를 다 한 번에 땡겨온다)
* 예전에는 웹서버(WAS)를 직접 서버에 설치해놓고(톰캣 같은 거) 거기에 자바 코드를 집어넣는 식이었다. (웹서버와 개발 라이브러리는 분리되어있었음)
요즘에는 소스 라이브러리에서 웹 서버를 들고 있다.(내장하고 있음) 실행만 하면 웹서버가 뜬다.
< 스프링 부트 라이브러리 >
- spring-boot-starter-web
- spring-boot-starter-tomcat: 톰캣 (웹서버)
- spring-webmvc: 스프링 웹 MVC
- spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)
- spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
- spring-boot
- spring-core
- spring-boot-starter-logging
- logback, slf4j
: 실제 로그를 어떤 구현체로 출력할 거야? 해서 요즘은 logback 많이 선택한다. 성능도 빠르고 여러 가지 지원하는 기능 좋다. 쉽게 말하면 인터페이스!
➡︎ 요즘은 이 두 가지 섞어서 많이 쓴다. 그래서 위의 spring-boot-starter-logging 땡기면 이 둘 따라옴
- logback, slf4j
- spring-boot
< 테스트 라이브러리 >
- spring-boot-starter-test
- junit: 자바 테스트 프레임워크
- mockito: 목 라이브러리
- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
* 출력할 때 프린트 말고 로그로 출력해야 한다. 왜냐하면 로그로 남겨야 심각한 에러만 따로 모아볼 수 있고 로그 파일들이 관리가 된다. 그래서 System.out.println();
거의 안 쓴다.
view 환경설정
스프링 부트가 제공하는 Welcome Page 기능
- static/index.html 을 올려두면 Welcome page 기능을 제공한다.
(스프링 부트는 스프링 생태계를 감싸서 편리하게 사용할 수 있도록 도와준다. 스프링은 자바 엔터프라이즈 웹 애플리케이션 개발 전반의 기능을 다 제공한다. 따라서 다 기억할 수 없으므로 필요한 것을 찾는 것이 중요하다. ➡︎ 여기서! )
* 템플릿 엔진을 쓰면 루프를 넣는 등. html 문서를 바꿀 수 있다.
// controller는 아래 어노테이션 붙여주기
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello"; // templates > hello.html 을 처리
}
}
- @GetMapping에서
/hello
라고 들어오면 이 메서드를 수행시킨다. (GetMapping의 get은 http의 get 메서드, post 메서드에서 그 get 임) - addAttribute에 이름과 값을 넣어주면, resources> templates > hello.html의
${data}
에서 data이름을 받았으니 hello!!라는 값을 반환한다.
컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버( viewResolver
)가 화면을 찾아서 처리한다.
- 뷰 리졸버는 어떻게 기본적으로 세팅되어있을까?
- 스프링 부트 템플릿엔진 기본 viewName 매핑
resources:templates/
+{ViewName}+.html
빌드하고 실행하기
콘솔에서
- ./gradlew build
- cd build/libs
- java -jar hello-spring-0.0.1-SNAPSHOT.jar
- 배포할 때는 hello-spring-0.0.1-SNAPSHOT.jar 만 서버에 넣어주고 java -jar ~ 실행하면 서버에서 스프링이 작동한다.
- 잘 안될 때는 hello-spring 폴더로 이동해 ./gradlew clean build 해준다. 그럼 build 폴더가 완전히 지워졌다가 새로 만들어진다.
참조
이 게시물은 인프런 > 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술의 강의를 토대로 작성한 게시물입니다.
'Web > Spring' 카테고리의 다른 글
회원 관리 예제 - 백엔드 개발 (0) | 2021.07.25 |
---|---|
스프링 웹 개발 기초(정적 컨텐츠, MVC와 템플릿 엔진, API) (0) | 2021.07.24 |
Application Scope (0) | 2021.06.24 |
Session Scope (0) | 2021.06.24 |
request scope (0) | 2021.06.24 |