빈의 id 속성에서 SpEL을 사용할 수 있습니까?Bean id 속성에서 Spring EL을 사용할 수 있습니까?
예컨대 : 무엇 <bean id="#{T(com.om.m).PublicStaticFinalStringProperty}"...
가 작동하지 않습니다이 방법은, 내가 변경하거나 불가능해야합니까?
빈의 id 속성에서 SpEL을 사용할 수 있습니까?Bean id 속성에서 Spring EL을 사용할 수 있습니까?
예컨대 : 무엇 <bean id="#{T(com.om.m).PublicStaticFinalStringProperty}"...
가 작동하지 않습니다이 방법은, 내가 변경하거나 불가능해야합니까?
이상하지만 가능합니다 (샘플은 스프링 3.1을 사용함). 다른 버전 일 : 불가능 :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
">
<context:property-placeholder properties-ref="myProps"/>
<util:properties id="myProps" >
<prop key="x.y.z">possible</prop>
</util:properties>
<bean id="testBean" class="Bean">
<property name="value" value="weird"/>
</bean>
<bean id="${x.y.z}" class="Bean">
<property name="value" value="but"/>
</bean>
<bean id="#{testBean.value}" class="Bean">
<property name="value" value="${x.y.z}"/>
</bean>
</beans>
Bean.java
public class Bean implements InitializingBean {
String value;
public void setValue(String value) {
this.value = value;
}
public void afterPropertiesSet() throws Exception {
System.out.println(value);
}
}
방금 코드를 시험해 보았습니다. 작동하지 않는 것이 두렵습니다. 나는 Bean이 BeanNameAware를 구현하고 컨텍스트가 전달하는 값을 출력하고 출력은 spel 리터럴이고 해석 된 표현이 아닙니다. 또한 스프링이 실제로 가능한 bean을 아는지 알아보기 위해'# {testBean.value}'value 속성에'# {$ {xyz} .value} '또는'# {possible.value}'값을 주입 해 보았습니다. bean의 해석 된 id). 그러나 이것은 모두 함께 실패합니다. – Ittai
위의 코드는 매력처럼 작동합니다. context.xml, 빈 코드 및 사용중인 스프링의 버전을 게시하면 도움이 될 것입니다. 어쩌면 새로운 게시물로? – micfra
나는 당신이 당신의 대답을 생각합니다. – duffymo
@Bax 방금 micfra의 답변을 시도했지만 bean의 id는 리터럴이고 표현식의 결과가 아니라는 의미에서 작동하지 않는다고 생각합니다. 다른 결과를 보았습니까? 감사합니다. – Ittai