`
足至迹留
  • 浏览: 485469 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论

<Spring-Aspect> 切面类(@Aspect)首先必须是bean

 
阅读更多
1. 问题描述
今天发现老工程里有个日志切面但是总是也没有执行过。

2. 问题解决
1)怀疑是execution表达式问题,先后改动了AspectJ表达式也不生效。

2)在idea里打断点调试,tomcat启动后发现断点红圈没有打勾(这种情况就表示代码永远不会走进来)。

最后一看,这个被标注了@Aspect的切面类根本就不是spring管理的bean。加上了@Component一切正常。

3. 总结
问题虽然很简单,但里面还是有几个知识点的:
1) spring2.5之后AOP已经全面被@Aspect等注解取代了,写起来很简便。

2)@AspectJ风格的切面可以通过@Compenent注解标识其为Spring管理Bean,也可以在xml里配置bean,无论哪种必须配置为bean。@Aspect注解不能被Spring自动识别并注册为Bean
<aop:aspectj-autoproxy/>用于开启Spring对@AspectJ风格切面的支持,但不能自动识别为bean,即使开启了 <context:component-scan>。

另外,spring允许abstract class里通过@Resource或@Autowired注入bean, 而abstract class本身不必是bean,也不可能是bean。


另外关于Aspect可以参考:
1.通用知识点:http://jinnianshilongnian.iteye.com/blog/1415606
2.Around和AfterThrowing不兼容http://tianya23.blog.51cto.com/1081650/565034
分享到:
评论

相关推荐

    Spring.html

    切面Aspect:切点加通知 织入weaving:讲切面加载进内存形成代理对象的过程 代理Proxy 底层实现 JDK动态代理(默认) 基于接口:代理对象与目标对象是兄弟关系,目标类必须实现接口 CGLIB动态代理 基于父类...

    springboot学习思维笔记.xmind

    @Aspect 声明是一个切面 拦截规则@After @Before @Around PointCut JoinPoint Spring常用配置 Bean的Scope Singleton Prototype Request Session GlobalSession SpringEL和资源...

    Spring AOP demo

    -- 配置切面的bean --&gt; &lt;bean id="loggingAspect" class="com.jas.aop.xml.LoggingAspect"/&gt; &lt;aop:config&gt; &lt;!-- 配置切点表达式 --&gt; &lt;aop:pointcut id="pointcut1" expression="execution(public ...

    java面试Spring.pdf

    AOP(Aspect-OrientedProgramming),面向切面编程 Spring AOP里面常用名词的概念: Spring容器的启动流程 Spring Bean的生命周期? Spring中bean的作用域 说一下Spring基于xml注入bean的几种方式? Spring如何解决循环...

    Spring面试题含答案.pdf

    52. Aspect 切面 53. 在 Spring AOP 中,关注点和横切关注的区别是什么? 54. 连接点 55. 通知 56. 切点 57. 什么是引入? 58. 什么是目标对象? 59. 什么是代理? 60. 有几种不同类型的自动代理? 61. 什么是织入...

    用于获取Spring Bean依赖关系图的工具(高分毕设).zip

    它包括IoC(Inverse of Control,控制反转)容器、AOP(Aspect-Oriented Programming,面向切面编程)等特性,可以简化开发过程、提高代码的可维护性和可测试性。 2. Spring MVC框架:Spring MVC是基于Spring框架的...

    Spring框架生态流程框架图-执行运行路程图

    AOP(面向切面编程)功能:Spring框架提供了AOP功能,通过切面(Aspect)来实现横切关注点的模块化。在AOP中,开发人员可以定义切点(Pointcut)和增强(Advice),以在应用程序的不同位置插入额外的逻辑。

    Spring JDBC,JdbcTemplate,Aspect的整合

    1.在mysql中创建一个Person数据库,在数据库中创建一个person表,有id,姓名,性别、家许...创建切面类,里面有身份核查、日志记录(记录在日志表中)。选择合适的连接点,使用xml声明式和注解两种方式完成aop的配置。

    movie-boot:基于Spring Boot的仿豆瓣平台。这是一个集电影,音乐和书籍于一体的Java web应用

    这是一个集电影,音乐和书籍于一体的Java web应用 命名为 微生活 个人主页: 详细的设计报告在文章后半部分 喜欢就点一下Star,谢谢亲的支持 Java 1.8 框架:使用Spring Boot ... aspect:切面应用 bean:回显的实体类

    积分管理系统java源码-movie:电影

    aspect:切面应用 bean:回显的实体类 celebrity:json影人条目信息 maoyan:猫眼 cinema:json单个电影院信息 cinemas:json多个电影院信息 movie:json电影信息 config:spring启动加载配置 controller:链接控制 webSock

Global site tag (gtag.js) - Google Analytics