META-INF폴더에 spring.factories파일을 생성한 후 위 내용을 추가해준다. 해당 프로젝트를 의존성에 추가한 프로젝트는 EnableAutoConfiguration이 HolomanConfiguration을 scan하여 configuration의 Bean을 추가해 준다.
mvn install
install을 더블클릭하거나 콘솔에가서 mvn install명령어를 실행하면 된다.
mvn install
프로젝트가 빌드되고 jar파일이 생성된다. 다른 maven 프로젝트에서 가져다 쓸 수 있도록 local maven저장소에 설치를 한다.
2020-03-15 20:29:06.744 INFO 53354 --- [ main] com.example.Application : Starting Application on yangdong-uui-MacBookPro.local with PID 53354 (/Users/dongwoo-yang/dev/study/spring/everyday_spring/chapter3/ch3_4/springbootgettingstarted/target/classes started by dongwoo-yang in /Users/dongwoo-yang/dev/study/spring/everyday_spring/chapter3/ch3_4/springbootgettingstarted) 2020-03-15 20:29:06.749 INFO 53354 --- [ main] com.example.Application : No active profile set, falling back to default profiles: default 2020-03-15 20:29:07.495 INFO 53354 --- [ main] com.example.Application : Started Application in 1.395 seconds (JVM running for 2.439) Holoman{name='maple', howLong=5}
Process finished with exit code 0
Holoman{name='maple', howLong=5}을 통해 정상적으로 작동함을 알 수 있다.
해당 프로젝트의 Bean이 무시가 된다. ComponentScan을 통해 먼저 Bean이 등록이 되고 EnableAutoConfiguration을 통해 Bean이 등록이 될때 해당 Bean을 덮어쓰게 된다.
다른 결과
*************************** APPLICATION FAILED TO START ***************************
Description:
The bean 'holoman', defined in class path resource [com/example/HolomanConfiguration.class], could not be registered. A bean with that name has already been defined in com.example.Application and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
Process finished with exit code 1
스프링 부트 2.2로 올라가면서 Bean 오버라이딩이 막혀서 에러 메시지가 뜨게 된다. 만약 Bean 오버라이딩을 하려고 하면 spring.main.allow-bean-definition-overriding=true 설정을 추가하면 Bean 오버라이딩이 가능해 진다.