Spring Runner
아래의 번역은 정확하지 않을 수 있습니다.
@Qualifier
공식문서에 아래와 같이 설명이 되어 있다.
This annotation may be used on a field or parameter as a qualifier for candidate beans when autowiring. It may also be used to annotate other custom annotations that can then in turn be used as qualifiers.
이 어노테이션은 후보 빈들을(주입받을 수 있는 빈들) 주입받을 때 필드나 매개변수에서 한정자로 사용된다. 다른 사용자 정의 어노테이션에 표시하기 위해 사용될 수도 있으며, 이는 차례로 한정자가 될 수 있습니다.
사용 시기
컨테이너에 동일한 형태의 Bean이 등록되어 있고 이를 주입 받는다면 NoUniqueBeanDefinitionException이 발생한다. 이때
@Qualifier("주입받고 싶은 Bean")를 사용해서 원하는 빈을 주입받을 수 있다.
@Primary
공식문서에 아래와 같이 설명이 되어 있다.
Indicates that a bean should be given preference when multiple candidates are qualified to autowire a single-valued dependency. If exactly one 'primary' bean exists among the candidates, it will be the autowired value.
Bean이 단일 값 의존성(하나의 Bean 형태)을 autowire 하기 위해 여러 후보자들에게 자격이 주어질 때 단일 우선순위가 주어져야 함을 나타냅니다.
This annotation is semantically equivalent to the element's primary attribute in Spring XML.
이 어노테이션은 Spring XML에서 요소의 기본 속성과 의미상 동일합니다.
May be used on any class directly or indirectly annotated with @Component or on methods annotated with @Bean.
@Component, @Bean 어노테이션은 클래스나 메소드에 직접 또는 간접적으로 사용할 수 있습니다.
사용 시기
같은 타입의 Bean을 등록해야 할 때 사용합니다. @Primary 어노테이션이 붙은 빈들은 우선적으로 주입이 되어 NoUniqueBeanDefinitionException이 발생하지 않습니다.
관점 지향 프로그래밍(AOP)
객체 지향적으로 코드를 짤 때 복잡한 요구사항을 만나게 된다면 관심사를 분리하기 힘들게 된다. 이때 횡적으로 관심사를 분리하기 위해 관점지향 프로그래밍이 필요해진다.
GoF의 디자인 패턴
추상 팩토리 패턴 : 클래스의 인스턴스를 직접 만들지 않고 관련된 제품 객체의 군을 생성하는 방법을 정의한다.
참가 객체로는 팩토리와 제품이 있다.
동일 계열의 제품군을 다룰 수 있다는 점에서 다른 패턴과 차이점이 있다.
JPA에서 EntityManagerFactory가 EntityManager를 생성하는 것이 추상 팩토리 패턴이라는 것을 알게 되었다.
'TIL' 카테고리의 다른 글
2022/01/20 TIL (0) | 2022.01.21 |
---|---|
2022/01/19 TIL (0) | 2022.01.20 |
2022/01/17 TIL (0) | 2022.01.17 |
2022/01/16 TIL (0) | 2022.01.17 |
# 2022/01/15 TIL (0) | 2022.01.15 |