@Configuration
은 Spring Framework에서 중요한 역할을 하는 어노테이션 중 하나이다. 이 어노테이션은 주로 Java 기반의 설정 클래스에 적용되어 해당 클래스가 Spring의 설정 정보를 포함하고 있다는 것을 나타낸다.
스프링에서는 XML 기반의 설정 방식 뿐만 아니라 Java 기반의 설정 방식도 제공하고 있다. Java 기반의 설정을 사용하려면 해당 설정 클래스에 @Configuration
을 붙여야 한다. 이렇게 하면 해당 클래스는 스프링의 설정 정보를 담고 있는 것으로 간주되며, 내부에서 @Bean
어노테이션을 사용하여 빈을 등록할 수 있다.
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
위의 코드에서 AppConfig
클래스는 @Configuration
어노테이션이 붙어 있기 때문에 스프링 설정 클래스로 인식되고, 내부의 myService
메서드는 @Bean
어노테이션을 통해 스프링 컨테이너에 MyService
타입의 빈으로 등록된다.
그러나 @Configuration
이 없는 클래스에서 @Bean
을 사용한다면, 해당 메서드의 반환 객체는 빈으로 등록되지 않는다.
하지만 스프링 부트와 같은 환경에서는 @Component
,@Service
, @Repository
, @Controller
와 같은 스테레오타입 어노테이션을 통해 간접적으로 빈을 등록할 수도 있지만, 전체 설정을 위한 목적으로 사용되는 클래스인 경우에는 @Configuration
을 사용하여 해당 클래스의 역할과 의도를 명확하게 표현하는 것이 좋고 생각된다.