`
zuishengmengsi1990
  • 浏览: 11161 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

spring mvc 使用aop问题总结

阅读更多
1.spring 注解aop配置

类:
@Aspect
public class ChangeTimeAspect {

@Autowired
private ChangeTimeBo changeTimeBo;

@Pointcut("execution(* com.zhaohuan.back.game.menuInfo.bo.MenuInfoBo.*MenuInfo(..)) ")
public void pointcutMenu(){

}

@AfterReturning(pointcut = "pointcutMenu()")
public void menuAfter(){
changeTimeBo.updateByType(ChangeTimeUtil.TYPE_MENU.getType());
}

}

applicationContext.xml配置

<bean id="changeTimeAspect" class="com.zhaohuan.back.game.changeTime.aspect.ChangeTimeAspect"></bean><aop:aspectj-autoproxy /> 

<context:component-scan base-package="com.zhaohuan" >
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>


因为使用了spring mvc所以配置如下

<context:component-scan base-package="com.zhaohuan" >
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>


遇到的问题:aop无效。

原因如下(转载):

Spring MVC 和 Spring 整合的时候,SpringMVC的springmvc.xml文件中 配置扫描包,不要包含 service的注解,Spring的applicationContext.xml文件中 配置扫描包时,不要包含controller的注解,如下所示:
SpringMVC的xml配置:
<context:component-scan base-package="com.insigma">
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
Spring MVC启动时的配置文件,包含组件扫描、url映射以及设置freemarker参数,让spring不扫描带有@Service注解的类。为什么要这样设置?因为springmvc.xml与applicationContext.xml不是同时加载,如果不进行这样的设置,那么,spring就会将所有带@Service注解的类都扫描到容器中,等到加载applicationContext.xml的时候,会因为容器已经存在Service类,使得cglib将不对Service进行代理,直接导致的结果就是在applicationContext 中的事务配置不起作用,发生异常时,无法对数据进行回滚。以上就是原因所在。
同样的在Spring的xml配置如下:
<context:component-scan base-package="com.insigma">          
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
扫描包路径,不扫描带有@Controller注解的类。因为这些类已经随容器启动时,在springmvc.xml中扫描过一遍了。
完成以上工作
分享到:
评论

相关推荐

    基于注解配置和使用spring AOP(spring mvc框架)

    总结,Spring AOP结合Spring MVC,使得我们可以灵活地在不修改业务代码的情况下,实现跨切面的关注点,提高了代码的可维护性和复用性。通过注解配置,AOP的使用变得更加简洁,降低了学习和使用的门槛。

    Spring Mvc AOP通过注解方式拦截controller等实现日志管理

    在Spring MVC框架中,AOP(面向切面编程)是一种强大的工具,用于实现跨切面的关注点,如日志管理。本教程将详细介绍如何利用注解来配置和使用AOP来拦截Controller层的方法,以便记录执行过程中的相关信息,实现日志...

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

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种强大的方式来实现横切关注点,如日志、事务管理、性能监控等,而无需侵入业务代码。下面将详细介绍Spring AOP的注解方式和XML配置方式。 ### ...

    Spring MVC jar包

    - **AOP集成**:Spring MVC与Spring的面向切面编程(AOP)无缝集成,可以方便地实现事务管理和其他切面功能。 2. **Hibernate 3.6.8**: - **ORM框架**:Hibernate是一个强大的ORM工具,它将Java对象映射到数据库...

    Spring-MVC-aop.zip

    在本文中,我们将深入探讨如何使用Spring MVC框架中的AOP(面向切面编程)特性,结合注解方式来实现对Controller层的拦截,以便进行日志管理。这是一项非常实用的技术,可以帮助开发者追踪和记录应用程序的关键操作...

    spring-springMVC开发文档和AOP详解

    本压缩包文件主要涵盖了Spring框架的核心部分——Spring MVC和AOP(面向切面编程)的详细知识,对于想要深入理解和运用Spring框架的开发者来说,是一份非常宝贵的资源。 首先,我们来看看《Spring3.20权威开发指南...

    Spring mvc mybatis plus 实现AOP 切面日志系统

    本项目“Spring MVC Mybatis Plus 实现AOP 切面日志系统”旨在提供一个基础的日志记录框架,能够自动追踪和记录应用程序的关键操作,同时支持数据持久化到数据库中,方便后期分析和问题排查。下面将详细介绍这些技术...

    最全最经典spring-mvc教程

    另外,Spring MVC与Spring框架的其他组件无缝集成,如Spring AOP(面向切面编程)用于实现日志、事务管理等功能,Spring JDBC和MyBatis等持久层框架用于数据库操作,以及Spring Data JPA、Hibernate等ORM工具,使得...

    spring_aop1.rar_java aop_spring mvc 例子

    通过这个实例,开发者能够逐步学习如何创建、配置和使用Spring AOP,以及如何将AOP概念应用于实际的Spring MVC项目中。同时,通过阅读说明文件和运行示例代码,可以帮助加深对AOP原理和实践的理解。对于初学者来说,...

    spring mvc框架下的aop例子

    在Spring MVC框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点分离,比如日志、事务管理、安全检查等,从核心业务逻辑中解耦出来。下面是一个简单的Spring MVC中AOP的例子,分为配置和实现两...

    Spring Mvc Aop

    本文将深入探讨在Spring MVC环境中如何配置和使用AOP,以及解决配置无效的问题。 首先,我们要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了横切关注点,比如跨越多个对象的业务逻辑。切点(Pointcut)...

    spring MVC AOP注解方式如何拦截controller 例子

    本文将详细介绍如何使用AspectJ注解在Spring MVC中实现AOP拦截Controller方法,并提供一个具体的例子。 首先,我们需要了解Spring AOP的基础概念。AOP允许我们定义“切面”,这些切面包含了业务逻辑中横切关注点的...

    spring mvc框架依赖全面jar

    在Spring MVC中,AOP常用于日志记录、事务管理等横切关注点,它可以将这些功能以声明式的方式与业务代码分离。 `ojdbc14.jar` 是Oracle数据库的驱动包,如果你的应用需要连接Oracle数据库,这个jar是必不可少的。 ...

    Spring MVC所需jar包

    1. **Spring 框架核心库**:这是 Spring MVC 的基础,它包含了 IoC(Inversion of Control,控制反转)和 AOP(Aspect Oriented Programming,面向切面编程)的核心概念。主要的 jar 包有 `spring-core.jar`、`...

    Spring IOC AOP MVC 简单例子

    总结来说,Spring的IOC、AOP和MVC是其核心特性,分别解决了对象管理和解耦、关注点分离以及Web应用结构的问题。理解并熟练掌握这三个概念,对于任何Java开发者来说都至关重要,特别是在大型企业级应用开发中。通过...

    spring mvc jar包

    6. `org.springframework.aop-3.0.2.RELEASE.jar`:这个库提供了面向切面编程(AOP)支持,允许开发者定义“切面”来封装交叉关注点,如日志、事务管理等,从而实现代码解耦。 7. `org.springframework.expression-...

    spring mvc aop

    spring mvc aop &lt;context:annotation-config /&gt;

    spring的部分常用xsd文件,包含mvc,aop,beans,tx,task多个版本

    Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入、面向切面编程(AOP)以及灵活的配置机制而闻名。XSD(XML Schema Definition)文件在Spring框架中扮演着重要角色,它们定义了XML配置文件的结构和...

    spring mvc mybatis 整合源码,带数据库脚本,带详细注释

    Spring MVC 和 MyBatis 是两个在Java Web 开发中广泛使用的框架。Spring MVC 作为Spring框架的一部分,负责处理HTTP请求并转发到相应的业务逻辑,而MyBatis则是一个轻量级的持久层框架,用于简化数据库操作。整合这...

    使用Spring MVC+AOP技术实现校友信息网站

    使用面向切面的编程,构建一个日志记录的切面 a. 对于所有的Alumni表的查询操作,记录各个操作的时间、用户,读取内容,存入ReadLog表格中。 b. 对于所有的Alumni表的更新(更新和删除)操作,记录各个操作的时间、...

Global site tag (gtag.js) - Google Analytics