`
足至迹留
  • 浏览: 497166 次
  • 性别: 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
分享到:
评论

相关推荐

    springmvc搭建详解

    这些是Spring的核心库,提供了Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)功能。 2. Hibernate 相关的 jar 包:hibernate3.jar、hibernate-jpa-2.0-api-...

    springmvc配置

    它也可能是整个应用上下文的一部分,包含了Spring的AOP(面向切面编程)配置。 ```xml &lt;bean id="userService" class="com.example.UserService"&gt; &lt;property name="dataSource" ref="dataSource"/&gt; &lt;/bean&gt; ``...

    ssh中struts2,spring,各配置说明

    Spring作为IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)容器,其配置文件Spring.xml主要用于声明bean及其依赖关系。例如: ```xml &lt;beans xmlns=...

    spring4 AOP 面向切面编程@Aspect

    在这个例子中,`@Aspect`注解声明了`LoggingAspect`类是一个切面。`@Pointcut`定义了一个切入点表达式,这里表示匹配`com.example.service`包下的所有方法调用。`@Before`通知则表示在匹配的方法执行前,先执行`...

    Spring4整合Jersey2.9

    Spring4是一个开源的应用框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等功能,广泛用于Java应用的开发。而Jersey是JAX-RS规范的参考实现,它提供了一套...

    spring-framework-4.3.0.RELEASE(源码已经成功编译)

    在4.3.0.RELEASE中,`Advisor`、`Pointcut`和`Aspect`等接口及其实现类是实现AOP的关键,它们定义了通知(Advice)、切入点(Pointcut)和切面(Aspect)的规则。 3. **Web MVC**:Spring MVC是Spring在Web开发中的...

    使用Maven管理Spring框架Demo

    Spring框架提供了多种方式来实现IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)。IoC通过Bean容器管理对象的生命周期和依赖关系。在`src/main/resources`目录下,我们...

    SSH普通配置指南新手有用

    SSH(Spring、Struts、Hibernate)是Java Web开发中常用的一种技术栈,它结合了Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)、Hibernate的持久层解决方案以及...

    Spring 3 mvc + Freemarker 框架例子

    它基于Spring IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)的核心特性,提供了MVC(Model-View-Controller)模式的实现。在本例子中,我们将深入探讨如何将Spring MVC...

    搭建SSM框架所用配置以及jar包

    Spring是Java企业级应用的核心框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等特性。在搭建过程中,你需要以下核心jar包: 1. spring-context.jar:包含...

    SSM三大框架的整合.docx

    它提供了一个轻量级的容器,利用控制反转(Inversion of Control, IoC)和面向切面编程(Aspect-Oriented Programming, AOP)等技术简化应用程序的开发过程。通过 IoC,Spring 可以管理应用程序中的对象及其依赖关系...

    自己写网页spring框架搭建

    Spring框架的核心优势在于其IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)两大特性,通过这些特性,可以极大地提高代码的复用性和可测试性。 #### 二、搭建Spring项目...

    spring-jdbc-4.2.xsd.zip

    通过这种方式,我们可以利用Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)特性,方便地管理和控制数据库操作,同时借助xsd文件的约束,确保配置的正确性。...

    Spring整合Servlet练习

    在IT行业中,Spring框架是Java企业级应用开发的首选框架之一,它以其强大的依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect Oriented Programming,简称AOP)功能而闻名。Servlet则是Java用于处理...

    SSH配置模板[总结].pdf

    - 在Spring配置文件中,`&lt;aop:config&gt;`或`&lt;aop:aspect&gt;`元素可以用来定义切面,实现面向切面编程,如事务管理、日志记录等。 8. **Bean定义**: - Spring配置文件中,`&lt;beans&gt;`元素是容器的根元素,`&lt;bean&gt;`元素...

    Developing a Spring Framework MVC application step-by-step

    Spring是一个开源Java平台,它简化了企业级应用的开发,提供了依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)等核心特性。在Spring MVC中,DI帮助管理对象之间的依赖关系...

    spring aop注解方式、xml方式示例

    在XML配置中,我们创建一个`&lt;aop:config&gt;`元素,并定义`&lt;aop:aspect&gt;`子元素来声明切面: ```xml &lt;aop:config&gt; &lt;aop:aspect id="loggingAspect" ref="loggingAspectBean"&gt; &lt;!-- ... --&gt; &lt;/aop:aspect&gt; &lt;/aop:...

    spring+hibernate+jta demo

    Spring作为轻量级的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)框架,提供了丰富的依赖注入和面向切面编程能力;Hibernate作为ORM(Object-Relational Mapping)框架,简化了数据库操作;而...

    spring配置文件

    在Java企业级开发中,Spring框架扮演着至关重要的角色,它提供了一种强大的依赖注入(Dependency Injection,简称DI)机制,以及面向切面编程(Aspect-Oriented Programming,简称AOP)的支持。Spring配置文件是定义...

Global site tag (gtag.js) - Google Analytics