2013-03-10 48 views
0

我有一個簡單的Spring上下文文件如下:。字符bean名稱和使用在規劃環境地政司

<bean id="acl.provider" class="com.provider.ProviderType" factory-method="getInstance"> 
    <constructor-arg index="0" value="${provider}"/> 
</bean> 

<bean id="acl.authentication" class="com.provider.AuthenticationFactory"> 
    <constructor-arg index="0"> 
     <value>#{ @acl.provider==T(com.provider.ProviderType).A 
        ?'classpath:cfg/a.spax' 
        :null}</value> 
    </constructor-arg> 
</bean> 

當我初始化上述背景下得到以下錯誤:當我改變acl.provider bean的名字

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'acl' is defined 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:527) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1083) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:274) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.context.expression.BeanFactoryResolver.resolve(BeanFactoryResolver.java:44) 
    ... 124 more 

aclprovider(刪除.字符)一切正常。

我的問題是:爲什麼.字符在bean名稱中使用並且在SpEL中使用?

回答

0

我找到了解決方案使用""SpEL如下:

<bean id="acl.provider" class="com.provider.ProviderType" factory-method="getInstance"> 
    <constructor-arg index="0" value="${provider}"/> 
</bean> 

<bean id="acl.authentication" class="com.provider.AuthenticationFactory"> 
    <constructor-arg index="0"> 
     <value>#{ @"acl.provider"==T(com.provider.ProviderType).A 
        ?'classpath:cfg/a.spax' 
        :null}</value> 
    </constructor-arg> 
</bean> 

我的問題就迎刃而解了。

相關問題