본 글은 백기선님의 스프링부트 개념과 활용강좌를 수강하며 정리한 내용입니다.
이번 포스트는 Autoconfoguration을 직접 만들어 실제 스프링부트 프로젝트에서 어떻게 활용될 수 있는지 연습해 본다.
먼저 Autoconfiguration을 제공할 새로운 스프링부트 프로젝트를 생성한다. 나의 경우 minsik-springboot-stater라는 이름으로 프로젝트를 생성하였다.
프로젝트가 생성되었다면 (maven의 경우) pom.xml 파일에 다음과 같은 디펜던시 설정을 해준다.
<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>
</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>
이후, 자동설정에 활용할 클래스를 만들어 Bean객체로 등록해 준다.
예를들어 다음과 같은 클래스를 만들 수 있다.
public class Holoman {
String name;
int howLong;
public String getName() {
return name;
}
public int getHowLong() {
return howLong;
}
public void setName(String name) {
this.name = name;
}
public void setHowLong(int howLong) {
this.howLong = howLong;
}
@Override
public String toString() {
return "Holoman{" +
"name='" + name + '\\'' +
", howLong=" + howLong +
'}';
}
}
이후 위와 같은 클래스를 빈객체로 등록해 줄 수 있는 다른 Configuration 클래스를 만든다. (원래 이러한 자동설정파일은 새로운 프로젝트로 만드는게 일반적이라고 한다.)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class HolomanConfiguration {
@Bean
public Holoman holoman(){
Holoman holoman = new Holoman();
holoman.setHowLong(5);
holoman.setName("Minsik");
return holoman;
}
이 Configuration클래스는 이전에 만든 Holoman이라는 클래스 객체를 자동 생성해 초기화를 시켜주는 클래스이다. 스프링 혹은 스프링부트 프로젝트에서 @Configuration 설정을 해놓을 경우 자동으로 의존성 주입이 발생하는 것 처럼 이곳에서도 해당 설정이 반드시 필요하다.
이후, META-INF폴더 밑에 spring.fatories라는 설정파일을 생성해 다음과 같은 설정을 한다.
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\\
web.ecoveloper.HolomanConfiguration
이는 @EndableAutoCofiguration 어노테이션이 자동설정을 실행할 때 이곳에 명시된 경로를 스캔하라는 것을 지시한다. (@EndableAutoCofiguration에 대한 내용은 이곳 참고)
이후, 생성된 프로젝트를 빌드해 jar파일로 변환해주어야 한다.
콘솔에서
mvn install
을 입력하게 되면 다른 메이븐 프로젝트에서 생성된 jar파일을 가져다가 사용될 수 있도록 로컬 메이븐 저장소에 설치하게 된다.