我有一個設計問題:CXF Web服務設計qestion
@WebService
public interface GlossaryWebService {
@Secured("READ")
public void foo();
@Secured("READ")
public void goo();
}
實現:
@WebService
public class GlossaryWebServiceImpl implements GlossaryWebService{
private GlossaryService glossaryService;
@Override
public void foo() {
glossaryService.foo();
}
@Override
public void goo() {
glossaryService.goo();
}
}
接口:
我會用一個例子說明問題
public interface GlossaryService {
public void foo();
public void goo();
}
執行:
public Class GlossaryServiceImpl extends GlossaryService{
@Override
public void foo() {
// impl
}
@Override
public void goo() {
// impl
}
}
正如你可以看到我們GlossaryWebServiceImpl實施GlossaryWebService 和GlossaryServiceImpl實施GlossaryService!
問題是GlossaryWebServiceImpl充當facade(用於GlossaryService),並且此 導致代碼重複。 GlossaryService中的方法也需要位於GlossaryWebService 中,而GlossaryServiceImpl中的方法也需要位於GlossaryWebServiceImpl中!
我可以通過讓GlossaryServiceImpl實現GlossaryWebService 來保存GlossaryWebServiceImpl的創建,我們將只有2個iterfaces和一個實現!
但這也成爲問題,因爲我希望@Secured
註釋(on GlossaryWebService) 僅在通過Web服務時執行,而不是在調用GlossaryServiceImpl上的方法時執行!
如果有人有任何想法的建議,這將是非常有益的! 在此先感謝。