[英]Cxf Web service design 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
}
}
正如您所看到的,我們已經實現了GlossaryWebService的GlossaryWebServiceImpl和實現了GlossaryService的GlossaryServiceImpl!
問題是GlossaryWebServiceImpl充當Facade(對於GlossaryService),這會導致代碼重復。 GlossaryService中的方法也必須在GlossaryWebService中,並且GlossaryServiceImpl中的方法也必須在GlossaryWebServiceImpl中!
通過使GlossaryServiceImpl實現GlossaryWebService,可以節省GlossaryWebServiceImpl的創建,這樣,我們只有2個Iterfaces和1個實現!
但這也造成了問題,因為我希望僅在通過Web服務而不是在調用GlossaryServiceImpl的方法時才執行@Secured
注釋(在GlossaryWebService上)!
如果有人有任何想法建議,那將非常有幫助! 提前致謝。
由於GlossaryWebServiceImpl是訪問Web服務的入口點,因此我將所有與Web Service相關的設置(角色,其他注釋)放入其中,並將所有業務邏輯放入GlossaryServiceImpl中:
@WebService
public class GlossaryWebService{
private GlossaryService glossaryService;
@Secured("READ")
public void foo() {
glossaryService.foo();
}
@Secured("READ")
public void goo() {
glossaryService.goo();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.