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的核心库,提供了Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)功能。 2. Hibernate 相关的 jar 包:hibernate3.jar、hibernate-jpa-2.0-api-...
它也可能是整个应用上下文的一部分,包含了Spring的AOP(面向切面编程)配置。 ```xml <bean id="userService" class="com.example.UserService"> <property name="dataSource" ref="dataSource"/> </bean> ``...
Spring作为IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)容器,其配置文件Spring.xml主要用于声明bean及其依赖关系。例如: ```xml <beans xmlns=...
在这个例子中,`@Aspect`注解声明了`LoggingAspect`类是一个切面。`@Pointcut`定义了一个切入点表达式,这里表示匹配`com.example.service`包下的所有方法调用。`@Before`通知则表示在匹配的方法执行前,先执行`...
Spring4是一个开源的应用框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等功能,广泛用于Java应用的开发。而Jersey是JAX-RS规范的参考实现,它提供了一套...
在4.3.0.RELEASE中,`Advisor`、`Pointcut`和`Aspect`等接口及其实现类是实现AOP的关键,它们定义了通知(Advice)、切入点(Pointcut)和切面(Aspect)的规则。 3. **Web MVC**:Spring MVC是Spring在Web开发中的...
Spring框架提供了多种方式来实现IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)。IoC通过Bean容器管理对象的生命周期和依赖关系。在`src/main/resources`目录下,我们...
SSH(Spring、Struts、Hibernate)是Java Web开发中常用的一种技术栈,它结合了Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)、Hibernate的持久层解决方案以及...
它基于Spring IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)的核心特性,提供了MVC(Model-View-Controller)模式的实现。在本例子中,我们将深入探讨如何将Spring MVC...
Spring是Java企业级应用的核心框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等特性。在搭建过程中,你需要以下核心jar包: 1. spring-context.jar:包含...
它提供了一个轻量级的容器,利用控制反转(Inversion of Control, IoC)和面向切面编程(Aspect-Oriented Programming, AOP)等技术简化应用程序的开发过程。通过 IoC,Spring 可以管理应用程序中的对象及其依赖关系...
Spring框架的核心优势在于其IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)两大特性,通过这些特性,可以极大地提高代码的复用性和可测试性。 #### 二、搭建Spring项目...
通过这种方式,我们可以利用Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)特性,方便地管理和控制数据库操作,同时借助xsd文件的约束,确保配置的正确性。...
在IT行业中,Spring框架是Java企业级应用开发的首选框架之一,它以其强大的依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect Oriented Programming,简称AOP)功能而闻名。Servlet则是Java用于处理...
- 在Spring配置文件中,`<aop:config>`或`<aop:aspect>`元素可以用来定义切面,实现面向切面编程,如事务管理、日志记录等。 8. **Bean定义**: - Spring配置文件中,`<beans>`元素是容器的根元素,`<bean>`元素...
Spring是一个开源Java平台,它简化了企业级应用的开发,提供了依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)等核心特性。在Spring MVC中,DI帮助管理对象之间的依赖关系...
在XML配置中,我们创建一个`<aop:config>`元素,并定义`<aop:aspect>`子元素来声明切面: ```xml <aop:config> <aop:aspect id="loggingAspect" ref="loggingAspectBean"> <!-- ... --> </aop:aspect> </aop:...
Spring作为轻量级的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)框架,提供了丰富的依赖注入和面向切面编程能力;Hibernate作为ORM(Object-Relational Mapping)框架,简化了数据库操作;而...
在Java企业级开发中,Spring框架扮演着至关重要的角色,它提供了一种强大的依赖注入(Dependency Injection,简称DI)机制,以及面向切面编程(Aspect-Oriented Programming,简称AOP)的支持。Spring配置文件是定义...