예제 2-8 @Bean 메서드 정의하기
@Configuration
public class ProjectConfig {
@Bean ← @Bean 애너테이션을 추가하여 스프링에 컨텍스트가 초기화될 때 이 메서드를 호출하고 반환된 값을 컨텍스트에 추가하라고 지시한다.
Parrot parrot() {
var p = new Parrot();
p.setName("Koko"); ← 나중에 앱을 테스트할 때를 대비해서 Parrot에 이름을 설정한다.
return p; ← 스프링은 메서드가 반환한 Parrot 인스턴스를 컨텍스트에 추가한다.
}
}
메서드에 사용한 이름에는 동사가 포함되어 있지 않다는 것을 확인하라. 일반적으로 메서드는 동작을 나타내므로 메서드 이름에 동사를 넣는 것이 자바의 모범 사례라고 배웠을 것이다. 하지만 스프링 컨텍스트에서 빈을 추가하는 데 사용하는 메서드는 이 규칙을 따르지 않는다. 이런 메서드는 반환하는 객체 인스턴스를 나타내며 이제 스프링 컨텍스트의 일부가 된다. 메서드 이름도 빈의 이름이 된다(예제 2-8과 같이 이제 빈 이름은 ‘parrot’이다). 관례에 따라 명사를 사용할 수 있으며, 대부분은 클래스와 이름이 같다.