[英]How can I apply an aspect using annotations in Spring?
更新 :我发现基于Spring 2.x注释的控制器对于AOP安全性来说是可怕的,因为由于params和返回值的自由度增加,你不能对方法原型做出假设。 在2.x之前,您可以拦截handleRequest并知道第一个参数是HttpServletRequest ,返回值是ModelAndView 。 该标准允许您为每个控制器编写简单的建议。 现在映射到请求的方法可以采取任何操作并返回Strings,ModelAndViews等。
原帖 :我有一组现有方面实现了在Spring中运行的AOPAlliance的MethodInterceptor。 它们通过拦截为我的webapp提供安全性。 的handleRequest。 控制器中的方法,允许执行或转发到登录页面。
使用Spring中基于注释的新控制器,不再需要实现“handleRequest”方法; 控制器的方法可以命名为我想要的任何名称。 这破坏了我现有的安全模型。 那么,我如何从中得到:
<bean class="com.xxx.aspects.security.LoginAdvice" name="loginAdvice">
<property name="loginPath">
<value>/login.htm</value>
</property>
<property name="authenticationService" ref="authenticationService" />
</bean>
<bean name="loginAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="advice" ref="loginAdvice" />
<property name="pointcut">
<bean class="org.springframework.aop.support.JdkRegexpMethodPointcut">
<property name="pattern">
<value>.*handleRequest.*</value>
</property>
</bean>
</property>
</bean>
<bean id="someProtectedController" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target">
<ref local="someProtectedControllerTarget" />
</property>
<property name="interceptorNames">
<list>
<value>loginAdvisor</value>
<value>adminAdvisor</value>
</list>
</property>
</bean>
...能够重用我现有的方面并使用注释将它们应用于整个控制器或控制器方法?
您是否可以使用AnnotationMatchingPointcut在控制器上查找具有@RequestMapping(或您在基于注释的Spring控制器中使用的其他类似注释)的方法?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.