更新:我發現基於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>
...要能重用現有的方面,並將其應用到使用註釋整個控制器或控制器的方法呢?