更新:我发现基于Spring 2.x注释的控制器对于AOP安全性来说太可怕了,因为由于params和返回值的自由度增加,您无法对方法原型做出假设。在2.x之前,您可以拦截handleRequest并知道第一个参数是HttpServletRequest并且返回值是ModelAndView。这个标准允许你为每个控制器编写简单的建议。现在映射到请求的方法可以采取任何东西,返回字符串,ModelAndViews等如何在Spring中应用使用注释的方面?
原贴:我有一组其实现AOPAlliance的MethodInterceptor的春季运行现有的方面。他们通过拦截为我的web应用程序提供安全性。 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>
...要能重用现有的方面,并将其应用到使用注释整个控制器或控制器的方法呢?