2016-01-07 30 views
0

我使用Apache的骆驼和我在blueprint.xml文件bean标签,如下所示:的Xml - 注射方法的结果在一个bean属性

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

的属性PERMISSIONSLIST是方法的结果perm()对这个类:

public class testshiro{ 

    public List<Permission> perm() 
    { 
     List<Permission> permissionsList = new ArrayList<Permission>(); 
     Permission permission = new WildcardPermission("zone"); 
     permissionsList.add(permission); 
     return permissionsList; 
    } 
    .... 

我怎样才能调用这个方法,并设置结果在bean标签上的permissionsList属性?

+0

您可以创建一个OSGI服务,它会给你一个权限列表。这并不难。 –

回答

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> 
1

您应该能够实例化testshiro作为工厂,然后speficy perm()作为创建列表的工厂方法。然后参考列表传递给您的四郎政策:

<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给出了如何在蓝图使用工厂一个很好的概述。

+0

我做到了这一点: ' <变元值=” shiro.ini “/> <属性名=” PERMISSIONSLIST” REF = “权限”/> ' ,我得到此错误消息: '当instanciating bean权限时,无法在类com.ngt.shiropermission.wcard上为参数[]找到匹配的工厂方法perm' – zied123456

+0

@ zied123456,并且perm()没有参数? – Ralf

+0

没有像这样的参数:'public List perm() { List permissionsList = new ArrayList (); 权限权限=新的WildcardPermission(“zone”); permissionsList.add(permission); 返回permissionsList; }' – zied123456

相关问题