gpt4 book ai didi

java - 如何在 Spring 中使用注解应用方面?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:04:57 24 4
gpt4 key购买 nike

更新:我发现 Spring 2.x 基于注释的 Controller 对于 AOP 安全性来说是可怕的,因为由于参数和返回的自由度增加,您无法对方法原型(prototype)做出假设值。在 2.x 之前,您可以拦截 handleRequest 并且知道第一个参数是一个 HttpServletRequest 并且返回值是一个 ModelAndView。该标准允许您为每个 Controller 编写简单的建议。现在映射到请求的方法可以接受任何东西并返回字符串、ModelAndViews 等。

原帖:我有一组现有的方面,它们实现了在 Spring 中运行的 AOPAlliance 的 MethodInterceptor。它们通过拦截 Controller 中的 .handleRequest. 方法并允许执行或转发到登录页面来为我的 webapp 提供安全性。

有了 Spring 中新的基于注解的 Controller ,“handleRequest”方法不再需要实现; Controller 的方法可以随意命名。这打破了我现有的安全模型。那么,我如何从中得到:

    <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>

...能够重用我现有的方面并使用注释将它们应用于整个 Controller 或 Controller 方法?

最佳答案

你能用一个AnnotationMatchingPointcut吗?在您的 Controller 上寻找具有@RequestMapping(或您在基于注解的 Spring Controller 中使用的其他类似注解)的方法?

关于java - 如何在 Spring 中使用注解应用方面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/789759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com