2016-01-07 45 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

相關問題