Xml - 在bean属性中注入方法的结果

时间:2016-01-07 10:04:55

标签: java xml apache-camel javabeans blueprint-osgi

我使用的是Apache Camel,我在blueprint.xml文件中有一个bean标记,如下所示:

heroku run:detached rake db:migrate

permissionsList属性是此类上perm()方法的结果:

 <bean id="shiroPolicy" class="org.apache.camel.component.shiro.security.ShiroSecurityPolicy">
          <argument value="shiro.ini"/>
               <property name="permissionsList" >
             <list>
                .......
            </list> 
          </property>
       </bean> 

如何调用此方法并将结果设置在bean标记的permissionsList属性中?

2 个答案:

答案 0 :(得分:1)

您应该能够将testshiro实例化为工厂,然后将perm()作为工厂方法来创建列表。然后将列表的引用传递给您的Shiro政策:

<bean id="permissionsFactory" class="your.package.testshiro"/>

<bean id="permissions" factory-ref="permissionsFactory" factory-method="perm" />

<bean id="shiroPolicy" class="org.apache.camel.component.shiro.security.ShiroSecurityPolicy">
    <argument value="shiro.ini"/>
    <property  name="permissionsList" ref="permissions" />
</bean>

这个tutorial很好地概述了如何在蓝图中使用工厂。

答案 1 :(得分:0)

<bean id="permissionsFactory" class="com.ngt.shiropermission.testshiro"/>
<bean id="permissions" factory-ref="permissionsFactory" factory-method="perm" />
<bean id="shiroPolicy" class="org.apache.camel.component.shiro.security.ShiroSecurityPolicy">
    <argument value="shiro.ini"/>
    <property  name="permissionsList" ref="permissions" />
</bean>