相关疑难解决方法(0)

使用Guice AOP在Jersey中拦截方法

是否可以使用Guice AOP拦截Jersey资源上的带注释方法?

我有一个成功配置的Guice集成与Jersey相关的依赖注入没有任何问题,但是我配置的拦截器根本没有拦截我的注释方法.

web.xml中

<listener>
    <listener-class>my.package.GuiceConfig</listener-class>
</listener>
<filter>
    <filter-name>guiceFilter</filter-name>
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>guiceFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

GuiceConfig配置模块

public class GuiceConfig extends GuiceServletContextListener {

@Override
protected Injector getInjector() {
    return Guice.createInjector(new JerseyServletModule() {

            @Override
            protected void configureServlets() {

                bindInterceptor(Matchers.any(), 
                                Matchers.annotatedWith(RequiredAuthority.class), 
                                new AuthorisationInterceptor());

                Map<String, String> params = new HashMap<String, String>(); 
                params.put(JSP_TEMPLATES_BASE_PATH, "/WEB-INF/jsp"); 
                params.put(FEATURE_FILTER_FORWARD_ON_404, "true");
                params.put(PROPERTY_PACKAGES, "my.service.package");

                filter("/*").through(GuiceContainer.class, params);
            } 
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

RequiredAuthority注释

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiredAuthority {
    String value();
}
Run Code Online (Sandbox Code Playgroud)

AuthorisationInterceptor方面

public class AuthorisationInterceptor implements MethodInterceptor {

    public Object invoke(MethodInvocation methodInvocation) …
Run Code Online (Sandbox Code Playgroud)

java aop jersey guice

5
推荐指数
1
解决办法
3154
查看次数

标签 统计

aop ×1

guice ×1

java ×1

jersey ×1