【发布时间】:2012-07-05 16:51:46
【问题描述】:
所以在 spring xml 配置中,我定义了以下切入点:
<aop:config>
<aop:aspect ref="metricsAdviceInterceptor">
<aop:around method="invoke" pointcut="@annotation(com.mycom.MetricsAdvice)"/>
</aop:aspect>
</aop:config>
这个想法是收集具有“MetricsAdvice”注释的方法的指标:
class SomeClass {
@MetricsAdvice
public void someMethod(...) { ... }
}
所以当我在我的 spring 配置中明确声明 bean 时,这一切都很好:
<bean id="someBean" class="com.mycom.SomeClass" />
但我希望能够在球衣代码上使用此注释,但它不起作用。现在,在球衣配置中,将以下内容添加到 web.xml。这个想法是你告诉球衣在哪些包裹中可以找到各种休息服务。即,它在包中查找类: com.mycom.restservices.* 并实例化它们。据推测,这些 bean 的实例化是“以不同方式”完成的,因此不会被代理:
<servlet>
<servlet-name>JerseyWebApplication</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<display-name>Jersey Servlet</display-name>
<init-param>
<param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
<param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>
com.mycom.restservices.billing;
com.mycom.restservices.account;
org.codehaus.jackson.jaxrs
</param-value>
</init-param>
....
那么,让这些注释在球衣豆上工作的“最佳实践”是什么?
谢谢。
【问题讨论】:
-
这个(旧)问题适用于 Jersey 1,但 Jersey 2 的用户可能会发现问题 JERSEY-2301related