为什么我需要在Application中明确声明REST资源?

时间:2018-03-29 07:28:11

标签: java java-ee jax-rs

在最近几个在微服务式架构中提供JAX-RS服务的例子中,我在定义根资源时看到了类似的东西:

 @Override
 public Set<Class<?>> getClasses() {
    Set<Class<?>> resources = new java.util.HashSet<>();
    resources.add(my.package.MyService.class);
    return resources;
 }

为什么我需要覆盖此方法并明确声明我的资源而不是让他们通过@Path注释发现它们?

1 个答案:

答案 0 :(得分:1)

我猜你会遇到旧的或不合格的例子。至少对于JAX-RS 2.x,没有必要这样做。您甚至不需要在web.xml中注册JAX-RS  只需添加@ApplicationPath("/your/rest/root")扩展javax.ws.rs.core.Application的JAX-RS激活器 - 类注释。 之后,您的JAX-RS提供程序应扫描使用@Path注释的所有资源并自动注册它们。所有拦截器和提供者都是如此 有关更多示例,请转到官方repo with Java EE samplesofficial samples for Wildfly app server - 您可能需要根据您使用的JEE版本更改分支。

希望有助于和快乐的黑客攻击。