티스토리 뷰
저번 포스팅에서 살펴봤던 자동 설정을 실습을 통하여 살펴보고자 한다.
먼저, AutoConfigure를 제공할 프로젝트를 생성하고 아래의 과정을 진행한다.
(물론 해당 의존성을 주입받을 프로젝트도 준비하자.)
Step 1. Creation AutoConfigure Project
1. pom.xml
<groupId>chany</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2. Domain Class 생성
public class Chany {
String name;
Long id;
// Getter Setter toString ..
}
3. Configuration Class 생성
@Configuration
public class ChanyConfiguration {
@Bean
public Chany chany() {
Chany chany = new Chany();
chany.setId(1);
chany.setName("yeol2");
return chany;
}
}
4. spring.factories 생성
Resource/META-INF에 spring.factories (서비스 프로바이더와 유사한 개념) 파일을 생성
# spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
chany.ChanyAutoConfiguration
5. Maven Install
Maven을 사용하는 다른 프로젝트에서 사용할 수 있도록 로컬 메이븐 저장소에 설치
Step 2. Usage in Main Project
1. Dependency Injection
해당 자동설정을 사용할 프로젝트에 dependency를 추가하여 주면 되는데 이때는 해당 자동 설정 파일의 groupId / actifactId / version 을 모두 명시.
<dependency>
<groupId>chany</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
2. Implementation Application Runner
해당 프로젝트에 자동설정이 제대로 들어왔는지 확인하기 위해 ApplicationRunner를 구현
- ApplicationRunner
: Spring Boot app이 올라왔을 때 자동으로 실행되는 Bean을 만들고 싶을 때 사용
@Component
public class ChanyRunner implements ApplicationRunner {
@Autowired
Chany chany
@Override
public void run(ApplicationRunner args) throws Exception {
System.out.println(chany);
}
}
이렇게 설정을 하면 Main Project에서는 별다른 설정 없이도 AutoConfigure에서 설정한 값을 그대로 사용할 수 있다.
하지만, Main Project에서 직접 Chany라는 Bean을 등록하고 값을 설정하면 이 값이 먹히지가 않는 현상이 발생한다.
즉, Component Scan을 통해서 직접 설정한 값이 Bean으로 등록된다고 하더라도 이후에 진행되는 EnableAutoConfigure에서 추가적인 Bean 등록이 이루어져 직접 설정한 Bean의 값이 Overwrite 되기 때문이다.
이 현상을 해결하기 위한 방법을 다음 포스팅에서 살펴보도록 하겠다.
@ 출처
'프로그래밍 > Spring Boot' 카테고리의 다른 글
| [Spring Boot] 6. profile 설정 (0) | 2021.03.08 |
|---|---|
| [Spring Boot] 5. 외부 설정 (0) | 2021.03.07 |
| [Spring Boot] 4. Spring Boot 특징 - 기본편 (0) | 2021.03.02 |
| [Spring Boot] 3. 자동 설정 구현(2) (0) | 2021.03.02 |
| [Spring Boot] 1. 자동 설정 (0) | 2021.03.01 |
댓글