spring auto configuration를 사용해 필요한 패키지만 Import 해보기!

Jinseok Lee·2022년 2월 4일
1
post-custom-banner

사연

사내 프로젝트를 개발하던 와중에 멀티 모듈로 존재하는 모듈들을 하나의 모듈로 합친 뒤 패키지별로 import하여 사용하는 방식으로 구현하라는 임무가 주어졌다. (뜨든...)

연구

spring에서 제공하는 spring.factories의 org.springframework.boot.autoconfigure.EnableAutoConfiguration에 미리 만들어 놓은 config파일을 로딩하거나 아니면 어노테이션을 직접 만들어서 사용하고자 하는 프로젝트에 enable 시키는 방법 두가지를 생각해냈다. 그 중에서 이번에는 EnableAutoConfiguration을 활용한 방법을 기록하고자 한다.

진행

auto configuration 만들기

@Configuration
@ComponentScan(basePackageClasses = {AuthorityApi.class})
public class AuthorityApiAutoConfiguration {
}
@Configuration
@ComponentScan(basePackageClasses = SApi.class)
public class SApiAutoConfiguration {
}

사용할 패키지는 sapi, authority-api 두가지여서 해당 패키지를 나눈 뒤

com.wemakeprice.v.employee.infra.web.sapi
com.wemakeprice.v.employee.infra.web.authority

각각의 패키지 안에 SApiAutoConfiguration, AuthorityApiAutoConfiguration config 클래스를 생성해 놓았다. 그리고 해당 클래스에서 @ComponentScan을 걸어 놓는다.

다른 모듈에서 해당 import 하기

스프링에서 기본적으로 약속 되어서 구동되는 resources > META-INF > spring.factories를 활용했는데

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    com.wemakeprice.v.employee.infra.web.sapi.SApiAutoConfiguration,\
    com.wemakeprice.v.employee.infra.web.authority.AuthorityApiAutoConfiguration

어려워 보이겠지만 다행하게도 자동완성이 되니 안심해도 좋다.

정리

어려워 보이겠지만 단순하다.

  • import 할 패키지를 선정하고 autoconfiguration 파일을 만든다.
  • import를 하는 쪽에서 resources > META-INF > spring.factories 파일을 생성해서 위 처럼 넣어주면 어플리케이션이 구동될 때 해당 auto configuration을 참조해서 bean들을 로딩한다!

위의 방법으로 sapi, authority-api 두가지 패키지 중 필요한 부분만 꺼내서 사용할 수 있게 되었다. 모듈들이 늘어나고 서로 필요로 하는 패키지가 상이할 경우 유용할거 같다.

profile
전 위메프, 이직준비중
post-custom-banner

0개의 댓글