项目的日志部分由我负责,哎,本来以为spring2的aop能有多难,spring1的会了,2的肯定也手到擒来,没想到,就这个整整花了我2天的时间才摆平,都崩溃了.
下面简单地写下代码和配置:
@Transactional //spring事务的支持
@Aspect //声明切面
public class LogService {
private ApamLogDAO apamLogDAO; //依赖注入dao,为节省版面就省略get,set了
private ApamLog apamLog; //声明日志的model类
private Asppoi asppoi;
private Account account;
// insert切入点
// 这里的execution表达式是最复杂的部分,其实不难,主要是没有什么文档能把描述得很详细,连spring2的官方文档也只是概括地点了下
@Pointcut("execution(* com.olemap.apam.dao.AsppoiDAO.save(..))")
public void PointcutSave() {
}
// insert通告
@AfterReturning(pointcut = "PointcutSave()", returning = "status")
public void AdviceSave(ProceedingJoinPoint joinPoint, Object status) {
asppoi = (Asppoi) joinPoint.getArgs()[0];
account = (Account) joinPoint.getArgs()[1];
apamLog = new ApamLog();
apamLog.setAccount(account);
apamLog.setAction("insert");
apamLog.setAsppoi(asppoi);
apamLog.setStatus(Byte.parseByte(status.toString()));
apamLog.setTime(new Date());
apamLogDAO.save(apamLog);
}
}
另外在spring的配置文件里,需要加上
<aop:aspectj-autoproxy proxy-target-class="true"/>
下面慢慢来解释:
一.spring2支持的增强类型:
before after afterReturning afterThrowing around
光名字就很好理解了,主要就是after,afterReturning的区别,在我这个模块上,我用了afterReturning,它可以让你的增强(advise)可以获得切入点的返回值.
二.签名语法:
call/execution/withincode(MethodPart)-方法调用/方法执行/在方法体内,MethodPart代表方法签名,execution较常用 (call我用了,但是始终报错,还没能试出它的用法)
MethodPart的语法结构是
[Modifier] Type [ClassType.] methodName(ArgumentType1...N...) [throws ExceptionType]
public void com.olemap.apam.dao.TestDAO.save(..) throws Exception
上面的语法是对应的,需要注意的是
1.加中括号的就是可选的部分
2.'..'是指所有的参数类型
3.可以用*来代表泛指
三.获得原方法形参的方法ProceedingJoinPoint
org.aspectj.lang.ProceedingJoinPoint表示连接点对象,通过getArgs()可以获得个连接点方法参数的数组
四.获得切入点方法返回值
在afterReturning那设置returning属性,并加在增强方法的形参处
除了注解实现外,另外还有xml文件配置,aspect语言2种方法实现,我会进一步去研究的.
以上是我这2天的成果,一次又一次的错误磨出来的,假如有什么错误或者有什么更好的方法,希望您指点下我.
分享到:
相关推荐
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 6. 7. <bean id="messageSenderImpl" class="com.savage.aop.HttpMessageSender"></bean> 8. 9. ...
3. **配置Spring**:创建spring-context.xml,定义bean的实例化、依赖注入和事务管理。 4. **配置Hibernate**:配置hibernate.cfg.xml,设置数据库连接、实体映射和事务策略。 5. **实体类和DAO**:编写实体类,基于...
【标题】"liferay-spring-portlet"是一个基于Spring框架构建的portlet应用,适用于Liferay门户平台。这个项目展示了如何将Spring与Liferay Portal结合,创建一个可直接部署到Liferay中的WAR包。作者提到他们已经花费...
"day01"暗示这是一个多天的系列教程,第一天可能涵盖安装环境、创建第一个Spring项目、理解和使用Bean定义、以及基本的依赖注入实践。 综上所述,这个“Spring快速入门”教程可能包括以下内容: 1. Spring框架简介...
Spring是一个开源的Java企业级应用框架,它提供了丰富的功能,包括依赖注入(DI)、面向切面编程(AOP)以及用于构建Web应用程序的MVC(Model-View-Controller)框架。这个主题通常涵盖如何将Spring的核心特性应用于...
2. **AspectJ**:一个独立的AOP框架,提供编译时和运行时的AOP支持。AspectJ的编译器ajc可以将切面编织到字节码中,提供更细粒度的控制和更高的性能。 3. **Aspect Oriented Maven (AOM)**:Maven插件,帮助在Maven...
网上找了很多例子多数都不能运行。包括after,before,round,throw切入,可对类直接拦截,不需要定义接口文件,自己研究了2天整理出来的。 Spring AOP 的完整例子,可直接运行。带jar包。
标题中的"spring_day06_spring_"表明这是关于Spring框架的第六天学习内容,而描述中的"heima source code day 06"暗示我们将探讨的是有关Heima(可能是一个项目或公司的名称)的源代码,这与Spring框架的集成或者在...
2. **Spring AOP实现原理** - Spring AOP使用Java动态代理或CGLIB字节码增强实现代理机制。 - 当目标类实现了接口时,Spring使用JDK的Proxy类生成动态代理对象。 - 对于没有接口的类,Spring使用CGLIB库生成目标...
【标题】"Spring-Struts2-Hibernate-Maven整合教程" 在Java Web开发领域,Spring、Struts2、Hibernate这三大框架的组合,通常被称为SSH(Spring-Struts2-Hibernate),是构建企业级应用的常见选择。Maven作为项目...
在"spring_day03_aop"这个压缩文件名中,我们可以推测这是一个学习资料或教程的一部分,涵盖了Spring框架第三天的学习内容,主要集中在AOP上。通常,AOP课程会涉及以下关键知识点: 1. **AOP概念**:面向切面编程是...
在Spring教学视频第四天的内容中,我们将会深入探讨Spring框架的核心特性与实际应用。Spring作为Java企业级开发的主流框架,其灵活性、可扩展性和模块化设计使得它在现代软件开发中占据了重要的地位。本节课程主要...
相关的jar包可能包括spring-core、spring-context、spring-beans、spring-aop、spring-tx等。 2. Spring MVC:Spring MVC是Spring框架的一部分,专为构建Web应用程序设计。它提供了一个模型-视图-控制器(MVC)架构...
在Spring框架中,AOP被广泛应用,提供了一种声明式的方式来管理横切关注点。 本示例是一个基于Spring Boot实现的AOP切面演示项目。Spring Boot是Spring框架的一个简化版本,它内置了Tomcat服务器,自动配置了许多...
2. **Spring**: - Spring是一个全面的企业级应用框架,提供依赖注入(DI)和面向切面编程(AOP)等核心功能。 - 依赖注入使对象之间的关系由容器管理,降低了对象间的耦合度。 - AOP用于实现横切关注点,如日志...
1.标题所提及技术的整合,Spring包括mvc、aop、ioc等。个人属于强迫症类型,技术水平怎么样再说,代码必须好看 2.Hibernate几个级别缓存对比。见DaoImpl类 3.Ehcache方法缓存及页面缓存。见applicationContext-cache...
下面我们将深入探讨"spring-mahout-demo"项目,理解如何将这两者有效地融合。 首先,"spring-mahout-demo"项目展示了如何在Spring应用中集成Apache Mahout。Spring框架的模块化设计使得添加新功能变得简单,通过...
在这个压缩包文件“spring-framework-5.0.x.zip”中,包含了Spring框架的核心源码,这对于深入理解Spring的工作原理和进行高级定制开发至关重要。 首先,让我们了解一下Spring框架的基本结构。Spring由多个模块组成...
2. **Spring Bean**:介绍Spring容器如何创建、初始化、配置和管理Bean,以及Bean的作用域(如Singleton、Prototype等)。 3. **AOP**:讲解面向切面编程的概念,如何在不修改源代码的情况下,实现对程序行为的统一...