1. @Bean 애너테이션의 name 속성과 value 속성
@Bean 애너테이션엔 name과 value 속성이 모두 존재한다. 두 속성 모두 빈의 이름을 지정하는 데 사용된다.
동시에 @AliasFor 애너테이션으로 서로를 지정하고 있어 상호 대체가 가능하다.
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Bean {
@AliasFor("name")
String[] value() default {};
@AliasFor("value")
String[] name() default {};
//...
}
name 속성은 빈의 이름을 명시적으로 지정하는 데 사용된다.
@Bean(name = "myBean")
public MyBean getMyBean() {
// ...
}
value 속성 또한 빈의 이름을 지정하는 데 사용되지만 생략이 가능하다는 차이가 있다. 즉, 속성 이름은 생략하고 값만 지정할 수 있다. 이는 자바 애너테이션을 사용할 때 속성 이름이 value이면 속성을 생략하고 값을 지정할 수 있기 때문이다.
@Bean("myBean")
public MyBean getMyBean() {
// ...
}
결론적으로 name이나 value 둘 중 무엇을 써도 상관없다. 서로 대체 가능하기 때문이다.
2. 참고
'Spring > Spring' 카테고리의 다른 글
[Spring] feign + hystrix 사용 시 특정 예외 무시하도록 처리하기 (0) | 2023.05.15 |
---|---|
[Spring] Reactive Feign에서 커스텀 Serializer/Deserializer 사용하기 (0) | 2023.03.21 |
[Spring] 빈 중복 시 해결방법(@Autowired, @Qualifier, @Primary) (0) | 2022.12.19 |
[Spring] 트랜잭션 전파 옵션 (0) | 2022.09.07 |
[Spring] 스프링 트랜잭션 전파와 롤백 (0) | 2022.09.07 |