2016-04-20 35 views
0

我正在擴展DbNodeServiceImpl類,並嘗試覆蓋名爲 public void setProperty(NodeRef nodeRef, QName qname, Serializable value)的方法。從核心接口調用自定義方法

當我想借助nodeService接口調用方法時,它調用了DbNodeServiceImpl中存在的默認方法,而不是我創建的自定義方法。我怎樣才能實現同樣的事情?我只是想在nodeservice接口的幫助下調用我自己的方法。

+2

你如何創建用於調用方法的實例?它應該使用像這樣的實例'NodeService s = new WhateverClassThatExtendsDbNodeServiceImpl()' – dambros

+0

不,我沒有實例化我只是注入nodeservice並在該注入的幫助下調用該方法。我只是使用nodeservice的引用和調用像s.setproperty(x,y,z) –

+0

顯示注入然後 – dambros

回答

1

你應該這樣定義自己的類:

<bean id="newOwnService" class="MyNewServiceImpl" init-method="init" parent="org.alfresco.repo.node.db.DbNodeServiceImpl" > 
     .... some needed properties.... 

     </bean> 

然後,你打電話給你的方法:

<bean id="newClass" class="NewClass"> 
     <property name="somethingName" ref="newOwnService"/> 
     </bean> 

在代碼:

private NodeService somethingName; 

public setSomethingName(NodeService somethingName){ 
    this.somethingName = somethingName; 
} 
0

該接口調用具有相同簽名的重寫方法。不能覆蓋的方法在同一實施者class.You兩次應該發佈一些代碼更好的解釋

+0

實際上,我有一個擴展DbNodeServiceImpl.class和DbNodeServiceImpl類實現nodeservice接口的類。我想重寫一個方法,在nodeservice中定義並在DbNodeServiceImpl中實現,但是當我調用該方法時,它的調用方法存在於DbNodeServiceImpl類中,而不是我的方法。 –

+0

沒有看到代碼,我認爲你是在類型爲DbNodeServiceImpl的引用上調用該方法,而不是在擴展DbNodeServiceImpl的其他類上。告訴我具體的調用指令 –

+0

確定我在這裏發送ü代碼 –