springnvc aop织入不生效

一个治疗术 2017-09-20 02:58:24
写了个token检测类,想织入所有@RequestMapping 请求的controller的类

可以是 @After 我是用的@Around

这是待织入类,没有用在配置文件中写
@Component
@Aspect
public class SecurityAspect {

private static final Logger logger = LoggerFactory.getLogger(SecurityAspect.class);

private TokenManager tokenManager;

@Resource(name = "tokenManager")
public void setTokenManager(TokenManager tokenManager) {
this.tokenManager = tokenManager;
}

@Around("@annotation(org.springframework.web.bind.annotation.RequestMapping)")
public Object execute(ProceedingJoinPoint pjp) throws Throwable {
MethodSignature methodSignature = (MethodSignature) pjp.getSignature();
logger.debug("methodSignature : " + methodSignature);
Method method = methodSignature.getMethod();
logger.debug("Method : " + method.getName() + " : "
+ method.isAnnotationPresent(IgnoreSecurity.class));
if (method.isAnnotationPresent(IgnoreSecurity.class)) {
return pjp.proceed();
}
String token = WebContext.getRequest().getHeader(
Constants.DEFAULT_TOKEN_NAME);
if (!tokenManager.checkToken(token)) {
String message = String.format("token [%s] is invalid", token);
logger.debug("message : " + message);
throw new TokenException(message);
}
return pjp.proceed();
}
}


还要一种是配置文件,但是也没有生效\

<!-- token 检查 -->
<bean id="securityAspect" class="com.api.work.base.SecurityAspect">
<property name="tokenManager" ref="tokenManager" />
<property name="tokenName" value="X-Token" />
</bean>

<bean id="tokenManager" class="com.api.work.base.DefaultTokenManager" />

<aop:config>
<aop:aspect ref="securityAspect">
<aop:around method="executeOne"
pointcut="execution(* org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(..))"/>
</aop:aspect>
</aop:config>


这两种办法都没有生效
...全文
218 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
一个治疗术 2017-09-20
  • 打赏
  • 举报
回复
引用 9 楼 pany1209 的回复:
[quote=引用 8 楼 aschouas 的回复:] [quote=引用 6 楼 pany1209 的回复:] [quote=引用 5 楼 aschouas 的回复:] [quote=引用 4 楼 pany1209 的回复:] [quote=引用 3 楼 aschouas 的回复:] [quote=引用 2 楼 pany1209 的回复:] 在SpringMVC的配置文件配置

 <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
即可
有[/quote] 有啥???[/quote] <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy> 这个写了,我还有其他事物配置[/quote] 我测试一下我的是可以的,你这个配置配置在哪里的???[/quote] springmvc.xml[/quote] context:component-scan扫到了SecurityAspect没???为啥我的Around可以生效?[/quote] 就是没有才困惑
李德胜1995 2017-09-20
  • 打赏
  • 举报
回复
引用 8 楼 aschouas 的回复:
[quote=引用 6 楼 pany1209 的回复:] [quote=引用 5 楼 aschouas 的回复:] [quote=引用 4 楼 pany1209 的回复:] [quote=引用 3 楼 aschouas 的回复:] [quote=引用 2 楼 pany1209 的回复:] 在SpringMVC的配置文件配置

 <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
即可
有[/quote] 有啥???[/quote] <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy> 这个写了,我还有其他事物配置[/quote] 我测试一下我的是可以的,你这个配置配置在哪里的???[/quote] springmvc.xml[/quote] context:component-scan扫到了SecurityAspect没???为啥我的Around可以生效?
一个治疗术 2017-09-20
  • 打赏
  • 举报
回复
引用 6 楼 pany1209 的回复:
[quote=引用 5 楼 aschouas 的回复:] [quote=引用 4 楼 pany1209 的回复:] [quote=引用 3 楼 aschouas 的回复:] [quote=引用 2 楼 pany1209 的回复:] 在SpringMVC的配置文件配置

 <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
即可
有[/quote] 有啥???[/quote] <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy> 这个写了,我还有其他事物配置[/quote] 我测试一下我的是可以的,你这个配置配置在哪里的???[/quote] springmvc.xml
leaybc 2017-09-20
  • 打赏
  • 举报
回复
我觉得...你应该还是哪里配置错了
李德胜1995 2017-09-20
  • 打赏
  • 举报
回复
引用 5 楼 aschouas 的回复:
[quote=引用 4 楼 pany1209 的回复:] [quote=引用 3 楼 aschouas 的回复:] [quote=引用 2 楼 pany1209 的回复:] 在SpringMVC的配置文件配置

 <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
即可
有[/quote] 有啥???[/quote] <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy> 这个写了,我还有其他事物配置[/quote] 我测试一下我的是可以的,你这个配置配置在哪里的???
一个治疗术 2017-09-20
  • 打赏
  • 举报
回复
引用 4 楼 pany1209 的回复:
[quote=引用 3 楼 aschouas 的回复:] [quote=引用 2 楼 pany1209 的回复:] 在SpringMVC的配置文件配置

 <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
即可
有[/quote] 有啥???[/quote] <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy> 这个写了,我还有其他事物配置
李德胜1995 2017-09-20
  • 打赏
  • 举报
回复
引用 3 楼 aschouas 的回复:
[quote=引用 2 楼 pany1209 的回复:] 在SpringMVC的配置文件配置

 <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
即可
有[/quote] 有啥???
一个治疗术 2017-09-20
  • 打赏
  • 举报
回复
自己顶一下
一个治疗术 2017-09-20
  • 打赏
  • 举报
回复
引用 2 楼 pany1209 的回复:
在SpringMVC的配置文件配置

 <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
即可
李德胜1995 2017-09-20
  • 打赏
  • 举报
回复
在SpringMVC的配置文件配置

 <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
即可

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧