参考:
aop概念和例子(详细):
http://blog.csdn.net/Matol/article/details/6096058
http://hi.baidu.com/rainfling/blog/item/d289e26fc2f2fbd381cb4af9.html
http://chenjumin.iteye.com/blog/364973
AOP例子:
http://pandonix.iteye.com/blog/336873
advisor 策略 是通过切入点 找到符合条件的方法 再根据策略 进行相应方法的事务控制
而aop:aspect 是根据切入点找到符合条件的方法 然后再根据切面的类型来适时的执行引入bean的方法
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="helloWorld" class="sytcun.HelloWorldServiceImp">
</bean>
<bean id="interceptorClass" class="sytcun.InterceptorClass"></bean>
<!--
<bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target">
<ref bean="helloWorld"/>
</property>
<property name="interceptorNames">
<list>
<value>interceptorClass</value>
</list>
</property>
</bean>
-->
<bean id="beanNameProxyCreater" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>*World</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>interceptorClass</value>
</list>
</property>
</bean>
<aop:config>
<!-- <aop:advisor pointcut="" advice-ref=""/>-->
<!-- 声明切面 order:加载顺序-->
<aop:aspect ref="interceptorClass" order="0" id="interceptor">
<!-- 声明切入点 -->
<aop:pointcut expression="execution(* sytcun..*(..))" id="pointcut"/>
<!-- 声明通知 -->
<aop:before pointcut-ref="pointcut" method="beforeAdvice"/>
</aop:aspect>
</aop:config>
</beans>
package sytcun;
public interface HelloWorldService {
public void sayHello();
}
package sytcun;
public class HelloWorldServiceImp implements HelloWorldService{
public void sayHello() {
System.out.println("hello world-sytcun");
}
}
package sytcun;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class HelloWorldMain {
public static void main(String args[]) {
ApplicationContext con=new FileSystemXmlApplicationContext("src/applicationContext.xml");
HelloWorldService helloWorld=(HelloWorldService)con.getBean("helloWorld");
//HelloWorldService helloWorld=(HelloWorldService)con.getBean("proxy");
helloWorld.sayHello();
HelloWorldService helloWorld2=(HelloWorldService)con.getBean("helloWorld");
helloWorld2.sayHello();
}
}
package sytcun;
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class InterceptorClass implements MethodBeforeAdvice{
public void before() {
System.out.println("hello world execute");
}
public void beforeAdvice() {
System.out.println("hello world execute --aop:config方式");
}
public void before(Method arg0, Object[] arg1, Object arg2)
throws Throwable {
System.out.println("hello world execute --自动代理方式");
}
}
分享到:
相关推荐
在IT行业中,Spring AOP(面向切面编程)是一种强大的工具,它允许我们在代码中实现横切关注点,如日志记录、权限控制等,而无需侵入业务逻辑。本篇将深入探讨如何使用Spring AOP来记录操作日志,并通过自定义Aspect...
spring aop实现接口参数变更前后对比和日志记录完整代码,拿到项目代码,只需要做数据库连接的修改即可运行起来使用,代码案例详细,真是可靠,代码原文地址:...
Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。这个"spring aop jar 包"包含了实现这一功能所需的类和接口,...
4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑实现 (需要知道原理的请看spring aop源码,此处不做赘述) 3、...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...
总结一下,Spring AOP提供了一种优雅的方式来处理系统的横切关注点,如日志记录、事务管理或性能监控。通过定义切点、创建切面和配置通知,我们可以实现代码的解耦,提高可维护性和复用性。这个例子提供了学习Spring...
### Spring AOP面向方面编程原理:AOP概念详解 #### 一、引言 随着软件系统的日益复杂,传统的面向对象编程(OOP)逐渐暴露出难以应对某些横切关注点(cross-cutting concerns)的问题。为了解决这一挑战,面向方面编程...
**Spring AOP 实现机制详解** Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许程序员在不修改源代码的情况下,通过“切面”来插入额外的业务逻辑,如日志、事务管理等。AOP的引入极大地提高了代码的...
总结来说,利用Spring AOP记录方法执行时间是一种优雅的解决方案,它有助于我们更好地理解和优化系统的性能瓶颈。通过切面和通知,我们可以轻松地插入监控代码,同时保持核心业务代码的清晰和整洁。在实际项目中,...
Spring AOP 记录用户操作日志的方法示例 Spring AOP(Aspect-Oriented Programming)是一种面向方面编程技术,可以帮助开发者实现跨越多个对象和类的功能。在本文中,我们将介绍如何使用 Spring AOP 来记录用户操作...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点,如日志、事务管理等。在Java应用中,AOP通过代理模式实现了切面编程,使得我们可以将业务逻辑...
- **日志记录**:使用AOP记录方法的调用日志,提高代码可读性和维护性。 - **事务管理**:通过AOP实现声明式事务管理,简化事务控制代码。 - **性能监控**:在关键方法前、后插入性能计时通知,便于性能分析。 -...
面向切面编程(AOP)是一种编程范式,旨在将横切关注点(如日志、安全等)与业务逻辑分离,从而提高模块化。...利用Java反射机制和Spring AOP框架,开发者可以方便地实现AOP,从而提升代码的模块化和可维护性。
在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...
9. **应用场景**:Spring AOP常用于日志记录、事务管理、性能监控、安全性控制等。例如,你可以定义一个切面来记录所有服务层方法的调用,或者在每次数据库操作前开启事务并在操作成功后提交事务。 通过以上介绍,...
在讨论Spring AOP(面向切面编程)时,首先需要理解几个核心概念。Spring AOP 是Spring框架提供的一个功能模块,它允许开发者将横切关注点(cross-cutting concerns)从业务逻辑中解耦出来,通过在方法调用前后进行...
**Spring AOP 简介** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要模块,它扩展了传统的面向对象编程,允许开发者定义“横切关注点”(cross-cutting concerns),如日志、事务...
在Java应用中,AOP主要用于日志记录、性能统计、安全控制、事务管理等方面,通过将这些通用功能模块化,可以避免重复代码,提高代码的可维护性和复用性。 Spring AOP的实现基于动态代理,有两种代理方式:JDK动态...
在传统的面向对象编程中,业务逻辑与日志记录、事务管理、性能监控等横切关注点混合在一起,而AOP则是为了解决这一问题而诞生的编程范式。 **1. Spring AOP 基础概念** - **切面(Aspect)**:切面是关注点的模块化...