autoConfiguration / ApplicationRunner

김수정·2020년 7월 7일
0

스프링/스프링부트

목록 보기
6/11

autoconfiguration

스프링 부트는 @ComponentScan, @EnableAutoConfiguration을 순서로 스프링 빈을 찾아내어 등록합니다.

@ComponentScan은 @ComponentScan이 선언된 곳의 하위 디렉토리에 선언되어 있는 @Repository, @Configuration, @Service등의 스프링 빈을 나타내는 annotation들을 bean에 등록해줍니다.

@EnableAutoConfiguration은 설정파일들을 참조하여 빈들을 등록합니다.

@Configuration - 스프링의 환경설정과 관련된 파일을 선언함. 이 곳에서 @Bean으로 빈을 설정합니다.

오류

1) 빈이 중복되어 에러나는 상황
오류:

The bean 'holoman', defined in me.whiteship.Application, could not be registered. A bean with that name has already been defined in class path resource [me/whiteship/HolomanConfiguration.class] and overriding is disabled.

Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

해결: application.properties 에 spring.main.allow-bean-definition-overriding=true 추가.
스프링부트2.1부터는 overriding옵션이 기본적으로 false로 되어있어서 그렇다고 함.

ApplicationRunner

앱이 실행될 때 인자를 받아서 바로 실행하고 싶을 때 사용하는 인터페이스입니다.

package me.whiteship;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Component
public class HolomanRunner implements ApplicationRunner {

    @Autowired
    Holoman holoman;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println(holoman);
    }
}
profile
정리하는 개발자

0개의 댓글