gpt4 book ai didi

java - Cxf Web服务设计问题

转载 作者:行者123 更新时间:2023-12-01 04:54:17 25 4
gpt4 key购买 nike

我有一个设计问题:

我将使用示例来描述该问题:

@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 充当门面(对于 GlossaryService),并且这个导致代码重复。 GlossaryService 中的方法也需要位于 GlossaryWebService 中并且 GlossaryServiceImpl 中的方法也需要位于 GlossaryWebServiceImpl 中!

我可以通过让GlossaryServiceImpl实现GlossaryWebService来节省GlossaryWebServiceImpl的创建这样我们就只有 2 个接口(interface)和一个实现!

但这也会产生问题,因为我想要 @Secured 注释(在 GlossaryWebService 上)仅在通过 Web 服务时执行,而不是在调用 GlossaryServiceImpl 上的方法时执行!

如果有人有任何想法建议,那将会非常有帮助!提前致谢。

最佳答案

由于 GlossaryWebServiceImpl 是您从 Web 服务访问服务时的入口点,因此我会将所有与 Web 服务相关的设置(角色、其他注释)放入其中,并将所有业务逻辑放入 GlossaryServiceImpl 中:

@WebService
public class GlossaryWebService{


private GlossaryService glossaryService;

@Secured("READ")
public void foo() {
glossaryService.foo();
}

@Secured("READ")
public void goo() {
glossaryService.goo();
}
}

关于java - Cxf Web服务设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14423034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com