如何使Jersey JAX-RS服务本身成为Springbean

如何使Jersey JAX-RS服务本身成为Springbean,spring,web-services,jersey,jax-rs,spring-aop,Spring,Web Services,Jersey,Jax Rs,Spring Aop,我有一个Jersey web服务类,比如: @Service @Path("/serv") public class Service { @Autowired @Qualifier("dao") Dao dao; @GET @Path("/get") public Response get(@QueryParam("hash") String hash) { // ... } } 现在自动布线可以工作了,因为我使用了

我有一个Jersey web服务类,比如:

@Service
@Path("/serv")
public class Service {

    @Autowired
    @Qualifier("dao")
    Dao dao;


    @GET
    @Path("/get")
    public Response get(@QueryParam("hash") String hash) {
        // ...
    }
}
现在自动布线可以工作了,因为我使用了
jersey-spring3
,如下所述:

我在web.xml中还有一个常用的Servlet:

<servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.test.rest</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

泽西塞尔维特酒店
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
com.test.rest
1.
豆子都用铁丝扎好了,都凉了。 问题在于服务类本身似乎不是由Spring本身管理的

因此,当我尝试注释JAX-RS服务时,比如使用
@Timed
metrics注释,调用不会被AOP截获


我能克服这个问题吗?我希望Spring能够“看到”对服务方法的调用,比如上面示例中的
service::get

如果您使用Java配置,则需要从Spring获取服务类以提供给Jersey。比如:

public class JerseyProductConfig extends ResourceConfig {

@Inject
public JerseyProductConfig(ServletContext servletContext) {
    WebApplicationContext springFactory = WebApplicationContextUtils.getWebApplicationContext(servletContext);
    register(springFactory.getBean(YourResource.class));
}
}


请注意,我在stackoverflow的某个地方找到了这个解决方案,但似乎找不到帖子。

服务
由Spring管理。
@Timed
不起作用的事实意味着存在一些配置错误。一个可能的原因是您的类路径上没有CGLIB,因此Spring无法为未实现CGLIB的类创建代理interface@geoand但是我确实用
@Timed
注释了注入的
Dao
,并且该实例是intercept!
Dao
是否实现了一个接口?@geo当然不是:-)您有什么类型的Spring配置文件,以及定时配置在哪个文件中?