私は設計上の問題を抱えています:
例を使用して問題を説明します。
@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 が (GlossaryService の) ファサードとして機能し、これがコードの重複を引き起こすことです。GlossaryService のメソッドも GlossaryWebService にある必要があり、GlossaryServiceImpl のメソッドも GlossaryWebServiceImpl にある必要があります。
GlossaryServiceImpl を作成して GlossaryWebService を実装することで、GlossaryWebServiceImpl の作成を節約できます。これにより、2 つの iterfaces と 1 つの実装のみが得られます。
@Secured
しかし、GlossaryServiceImpl のメソッドを呼び出すときではなく、Web サービスを通過するときにのみ (GlossaryWebService の) 注釈を実行する必要があるため、これも問題になります。
誰かにアイデアの提案があれば、それは非常に役に立ちます! 前もって感謝します。