java - Cxf Web服务设计问题

标签 java spring spring-security cxf

我有一个设计问题:

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

@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/

相关文章:

java - 为什么我的所有 Spring boot 执行器端点都是公开可用的?

java - 编写一个返回字符串偶数索引的方法

java - 验证selenium中标签的值

java - 将 spring-reactor 集成到现有 Spring Framework 4 STOMP Over WebSocket 应用程序中

java - session 过期时spring 3 mvc SessionAttributes中的默认对象

java - 部分页面Spring Security重认证

java - 动态序列化/反序列化

java - 尽管使用并发请求和低流量,但仍存在两个实例

java - 如何在Spring中从序列生成实体字段的部分值?

java - 使用 Spring Security 的 @Secured 注释中是否允许多个角色