@Bean과 @ Comopnent 어노테이션 둘 다 IoC Container에 Bean을 등록하도록 하는 메타 데이터를 기입하는 어노테이션입니다. 왜 두 개가 존재할까요 그 이유는 둘의 용도 차이입니다.
@ Bean 인경우 개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 만들려할경우 사용됩니다.
만약 ArrayList와 같은 라이브러리 등을 Bean으로 등록하기 위해서는 해당 객체를 반환하는 메서드를 만들고 @Bean 어니 테이션을 붙어주어야 합니다. Bean id는 메서드의 이름을 카멜 케이스로 변경한 것이 id가 됩니다.
만약 name을 준다면 @Bean(name='name') 원하는 이름으로 빈을 등록할 수 있습니다.
@Component 어노테이션은 개발자가 직접 작성한 Class를 Bean으로 등록하기위한 어노테이션입니다.
@Component어노테이션 역시 value값으로 이름을 지정할 수 있으며 등록하지 않은 경우 class의 이름을 카멜 케이스로 변경한 것이 bean id로 사용됩니다.
@Component를 사용한 Bean의 의존성 주입은 @AutoWired 어노테이션을 이용한다.
@Component
public class Exam {
@Value("20")
private int math;
private int kor;
}
또한 value어노테이션은 기본값을 설정할 수 있도록 도와준다.
@Component는 MVC방식으로 웹어플리케이션을 만들 경우 구성하고 있는 자바 코드에 대해 @Component라고 말한다.
우리는 좀더 의미론적으로 3단계로 나누어 볼 수 있습니다.
@Controller
@Service
@Repository
따라서 @Component 를 사용하는 것보다 3가지를 사용하게 되면 객체화하고자 하는 클래스가 어떠한 역할을 하는지 명시화 할 수 있기에 @Controller @Service @Repository 를 사용하는 것이 바람직합니다.
'Spring|Spring-boot' 카테고리의 다른 글
[Spring] 단순 연결을 위한 컨트롤러 처리 (0) | 2020.06.23 |
---|---|
[Spring] Java Configuration (0) | 2020.06.22 |
[Spring] @Autowired , @Qualifier (0) | 2020.06.18 |
[Spring] Annotaion (0) | 2020.06.18 |
[Spring] 생성자 DI (0) | 2020.06.17 |
댓글