[SPRING] Spring : @Qualifier와 Property Placeholder 사용하기
SPRINGSpring : @Qualifier와 Property Placeholder 사용하기
@Qualifier에 대한 속성으로 다음과 같이 속성 자리 표시자를 사용하려고합니다.
@Autowired
@Qualifier("${beanName}")
private MyBean myBean;
그러나 속성 자리 표시자를 String 값으로 사용할 수있는 경우에도이 방법은 작동하지 않습니다.
@Value("${beanName}")
private String beanName;
여기서 좋은 해결 방법은 무엇입니까, 대단히 감사합니다.
해결법
-
==============================
1.동일한 문제가 발생했습니다. 리소스 만 사용하십시오.
동일한 문제가 발생했습니다. 리소스 만 사용하십시오.
@Resource(name="${beanName}") private MyBean myBean;
-
==============================
2.나는 이것이 내 대답이기 때문에 코멘트를 남길 수 없다 :
나는 이것이 내 대답이기 때문에 코멘트를 남길 수 없다 :
Adam B가 아마 스프링 프로파일을 사용하여 목표로하는 결과를 얻을 수 있다고 말했기 때문에 (결과는 목표로하고 있습니까?)
당신이 할 수있는 또 다른 일은 :
xml 컨텍스트 구성에서 다음과 같이 맵 (spring util 네임 스페이스 사용)을 구성하십시오.
<util:map id="mapId" key-type="java.lang.String" value-type="com.xxx.interface-or-superclass"> <beans:entry key="${property.bean.name.1}" value-ref="bean1-defined-elsewehere"/> <beans:entry key="${property.bean.name.2}" value-ref="bean2-defined-elsewehere"/> <beans:entry key="${property.bean.name.3}" value-ref="bean3-defined-elsewehere"/> </util:map>
그런 다음이 맵을 eg라는 bean에로드 할 수 있습니다. "com.xxx.BeanSelector"
@Value("#{mapId}") private Map<String, com.xxx.interface-or-superclass> myMap;
이 bean에 다음과 같은 메소드를 추가하십시오.
public interface-or-superclass getBean(String beanName){ return myMap.get(beanName); }
이제는 최종 수업을 다음과 같이 할 수 있습니다.
@Autowired private BeanSelector beanSelector; @Value("${property.name.the.bean.you.want.to.use}") private String beanName; private interface-or-superclass myBean;
그때 당신은 myBean을 istantiate 할 수 있습니다 (아마도 InitializeBean 인터페이스를 구현한다면 afterPropertiesSet () 메소드 안에있을 것입니다)
이런 식으로:
myBean = beanSelector.getBean(beanName); // then check ifthe bean is not null or something like that
좋아, 좀 지저분 해. 어쩌면 네가 성취하고자하는 바를 토대로 다른 방식으로 행동 할 수도 있겠지만, 해결 방법이다.
-
==============================
3.그냥 시도해보십시오 (해결할 문제를 실제로 알지 못함). 보통 고정 빈 이름을 사용할 수 있지만 (placeholder가있는 autowire는 지원되지 않음) 속성 값을 기반으로 다른 XML 구현에서 다른 빈 구현을로드 할 수 있습니다. . Bean 별칭 기반의 솔루션에 대해 생각해보십시오. 내 2 센트
그냥 시도해보십시오 (해결할 문제를 실제로 알지 못함). 보통 고정 빈 이름을 사용할 수 있지만 (placeholder가있는 autowire는 지원되지 않음) 속성 값을 기반으로 다른 XML 구현에서 다른 빈 구현을로드 할 수 있습니다. . Bean 별칭 기반의 솔루션에 대해 생각해보십시오. 내 2 센트
from https://stackoverflow.com/questions/18209237/spring-using-qualifier-with-property-placeholder by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 데이터 REST URI 대 엔티티 ID (0) | 2019.02.23 |
---|---|
[SPRING] @Required 주석은 JavaConfig와 어떻게 작동합니까? (0) | 2019.02.23 |
[SPRING] Spring AOP CGLIB 프록시의 필드가 null입니다. (0) | 2019.02.23 |
[SPRING] JPA Hibernate Persistence 예외 [PersistenceUnit : default] Hibernate SessionFactory를 빌드 할 수 없다. (0) | 2019.02.23 |
[SPRING] 자동 증가 된 복합 id 시퀀스를 Hibernate로 매핑 할 때의 행동을 설명하십시오. (0) | 2019.02.23 |