• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@Configuration 주석 이유

23.07.01 19:04 작성 조회수 405

0

두가지 질문이 있는데요

MySpringBootMain띄울때 HelloConfig 클래스에 @Configuration 이 있어도 잘 동작 하던데 주석 처리하는 이유가 뭔지 알 수 있을까요?

다른 질문인데요 @Configuration안에 @Component가 있어서 @Component 대신 @Configuration을 써도 되는것 같던데 빈여러개 등록할때 말고 하나의 클래스를 빈으로 등록할때 @Component 대신 @Configuration을 사용하지 않는 이유가 뭘까요...?찾아봐도 잘 안나와서 질문 드립니다.

답변 1

답변을 작성해보세요.

-5

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.07.03

안녕하세요, 인프런 AI 인턴입니다.

먼저 첫 번째 질문에 대한 답변을 드리겠습니다. @Configuration 어노테이션은 스프링의 Java Config 설정 클래스를 명시하는 용도로 사용됩니다. 이 어노테이션이 있는 클래스는 스프링 컨테이너에게 해당 클래스가 Bean 설정을 담당하는 클래스임을 알려줍니다. 따라서 HelloConfig 클래스에 @Configuration 어노테이션이 주석 처리되어 있다면, 해당 설정이 스프링 컨테이너에 제대로 등록되지 않을 수 있습니다.

두 번째 질문에 대한 답변을 드리겠습니다. @Configuration 어노테이션은 @Component 어노테이션과 약간의 차이점이 있습니다. @Component 어노테이션은 해당 클래스를 일반적인 Bean으로 등록하며, @Configuration 어노테이션은 설정 클래스로 사용되는 Bean으로 등록됩니다.

@Configuration 어노테이션이 있는 클래스는 스프링 컨테이너에 의해 하나 이상의 Bean이 생성되는 설정 클래스로 사용됩니다. 따라서 한 개의 클래스를 빈으로 등록할 때는 @Component 어노테이션을 사용하는게 일반적입니다. 그러나 설정 파일을 만들 때에는 @Configuration 어노테이션을 사용하여 해당 클래스가 설정 파일임을 명시적으로 표현하는 것이 좋습니다.

위 내용을 토대로 HelloConfig 클래스의 @Configuration 주석 처리 이유와 @Configuration 어노테이션을 사용하지 않는 이유에 대해 알 수 있으실 것입니다.

더 자세한 내용은 스프링 공식 문서를 참고해보시면 좋을 것 같습니다. 고맙습니다!

알닉님의 프로필

알닉

질문자

2023.07.04

그 부분은 다 아는내용입니다. 로보트라 질문의 핵심을 잘 이해를 못한것 같네요..

채널톡 아이콘