ComponentScan, Bean

해질녘·2022년 2월 25일
0

Spring, JPA

목록 보기
1/10
post-thumbnail

@ComponentScan

@Component 라는 어노테이션이 위에 붙은 객체는 컴포넌트라고 등록이 된다. 이런 컴포넌트들을 scan하여 알아서 등록해준다.

@Bean

@ComponentScan("패키지")이 알아서 어노테이션을 찾아 읽어오는데, 왜 @Bean 를 사용하는가?

다른 라이브러리의 객체를 이용하는 경우에, 해당 라이브러리를 직접 편집해서 @Bean을 붙일 수는 없다.

그럴 때는 ApplicationConfig 파일에서 직접 @Bean을 붙여서 등록하면 사용이 가능해진다.

등록 방법은 메서드 쓰는 방법과 유사하다. 메서드의 이름은 Bean 등록 시의 아이디와 같다.

@Bean 예시

@Bean
	public Car car(Engine e) {
		Car c = new Car();
		c.setEngine(e);
		return c;
	}

비교

@ComponentScan 도입 전

ApplicationConfig01.java

public class AplicationConfig01 {
	@Bean
    public Foo foo() {
    	Foo f = new Foo();
        return f;
    }

}

Foo.java

public class Foo {
	// 생성자 등
}

@ComponentScan 도입 후

ApplicationConfig02.java

@Configuration
@ComponentScan("패키지명")
public class ApplicationConfig2 {
	
}

Foo.java

@Component
public class Foo {
	// 생성자 등
}

0개의 댓글