개발 툴
- 개발 중에 유용한 기능 제공
- 개발 중에 뷰 리소스 또는 템플릿이 적용되어 있는 캐시는 오히려 불편하다.
- 개발 중에 애플리케이션을 자주 재시작한다.
- 개발 중에 웹 브라우저를 자주 리로딩 한다.
thymeleaf 는 스프링 MVC 과정을 거쳐야 한다.
뷰를 변경해도 재시작을 해야 반영이 된다.
DevTools 는 일반적으로 서버를 내렸다 올리는 식의 재시작 방법보다 더 빠르게 재시작 할 수 있다.
- classpath 에 변경이 생기면 이를 감지해 재시작 여부를 판단하게 된다.
- 프로그램이 실행되면 polling을 통해 주기적으로 classpath의 변경여부를 확인하고 있기 때문
DevTools 사용 방법
1. 의존성 추가
2. 빌드
DevTools 적용 확인
1. GetMapping 추가
2. 빌드
3. 정상 동작 확인
서버 재시작을 하지 않고 빌드만을 통하여 변경사항을 적용할 수 있다.
Q. 배포를 위한 패키징 시, DevTools 의 의존성을 넣어야 할까 빼야할까?
A. DevTools 설정은 자동으로 무시가 되므로, 빼지 않아도 된다.
자동 설정
- Convention over Configuration
애플리케이션에서 설정한 빈 등록 | @ComponentScan @Component, @Service, @Controller, @Repository @Configuration @Bean |
자동 설정으로 제공하는 빈 등록 | META-INF/spring.factories EnableAutoConfiguration @Configuration && @ConditionalONXxx |
1. 새로운 프로젝트 생성
- File -> New -> Project -> Spring initializer
2. 새로운 패키지 생성
- me.blackship
- 새로운 패키지를 생성하는 이유 ? 컴포넌트 스캔으로 인해 빈 충돌이 일어남
3. 컨트롤러 생성
- UwahanController.java
package me.blackship;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UwahanController {
@GetMapping("/lol")
public String lol() {
return "HELLO";
}
}
4. spring.factories 파일 생성
- resources -> META-INF -> spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
5. 컨피그 생성
- UwahanConfig.java
package me.blackship;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class UwahanConfig {
@Bean
public UwahanController uwahanController() {
return new UwahanController();
}
}
6. 5번 설정파일을 다른 빈에서도 쓰고 싶으면 어떻게 할까?
7. spring.factories 파일 수정
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
me.blackship.UwahanConfig
8. 로컬 메이븐 저장소에 Install
- Maven -> LifeCycle -> install 클릭
9. pom.xml 의 아래 부분 복사 후, 기존 프로젝트에 붙여넣기
<groupId>me.whiteship</groupId>
<artifactId>uwahan-config</artifactId>
<version>0.0.1-SNAPSHOT</version>
10. 기존 프로젝트 실행 후, /lol URL로 접속
빈 등록의 우선순위
- 애플리케이션에서 설정한 빈 > 자동 설정으로 제공하는 빈
- 애플리 빈 / 자동 빈 - 아이디가 같은 빈이 있다면 뜨지 않음
- 자동 빈 / 자동 빈 - 아이디가 같은 빈이 있다면 뜨지 않음
외부 설정 파일
- 코드에서 값을 밖으로 꺼내는 방법을 제공
- application.properties 또는 application.yaml, 환경변수, 자바 명령어 어규먼트 등 키/값 형태로 정의되어 있는 다양한 외부 설정을 지원
- application.properties - 가장 구체적이고 가까운 위치에 있는 설정의 우선순위가 높다.
1. 외부 설정파일 수정 - application.properties
2. 클래스 추가
3. 의존성 주입 후, return 값으로 설정
4. 실행화면 확인
application.properties 를 위치시킬 수 있는 곳은 기본적으로 4군데가 있다.
- 구체적이고 가까운 파일부터 참조한다.
- config 디렉토리 안에 있다면, 구체적인 설정이다.
4번 위치 - 기본 JAR 하
3번 위치 - JAR 내 컨피그 폴더 하
2번 위치 - target 파일 하
'Back-end > Spring Boot' 카테고리의 다른 글
스프링 부트 웹 서비스 개발 (0) | 2021.07.14 |
---|---|
스프링부트 프로젝트 만들기 (0) | 2021.07.12 |
스프링 부트 소개 (0) | 2021.07.09 |
스프링 부트 - 배포 및 관리 (0) | 2021.06.16 |
스프링 부트 - 빌드 (0) | 2021.06.15 |