Spring 配置实现AOP

原创 2018年04月17日 15:07:22

Spring 配置实现AOP

       AOP面向切面编程

       利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

              在程序运行过程中,动态的切入到程序的指定位置。

第一个例子:AOP

1.        引入spring aop所需要的jar

aopalliance-1.0.jar
aspectjweaver.jar
cglib-nodep-2.1_3.jar
commons-logging-1.1.1.jar
servlet-api.jar
spring-aop-3.2.4.RELEASE.jar
spring-beans-3.2.4.RELEASE.jar
spring-context-3.2.4.RELEASE.jar
spring-core-3.2.4.RELEASE.jar
spring-expression-3.2.4.RELEASE.jar
spring-web-3.2.4.RELEASE.jar

2.        编写业务接口与目标类:

publicinterface UserService{

     publicvoid add(String name);

     publicvoid select(String name);

}

publicclass UserServiceImpl implements UserService{

     publicvoid add (String name) {

         System.out.println("增加 "+name+"...");

     }

     publicvoid select(String name){

         System.out.println("查询"+name+"...");

         String name1 = null;

         }

     }

}

3.        编写方法执行前后处理:

//前置增强:表示在目标方法执行前实施增强

publicclass BeforeAdvice implements MethodBeforeAdvice {

     @Override

     publicvoid before(Method arg0, Object[] arg1, Object arg2)

              throws Throwable {

         String clientName = (String)arg1[0];

         System.out.println("在执行方法之前加入切点....."+arg1);

     }

}

 

Springaop提供前后置异常通知处理类:

通知分为:前置通知、后置通知、异常通知、最终、环绕通知

MethodBeforeAdvice(前置通知)

AfterReturningAdvice(后置通知)

MethodInterceptor(前后通知)

ThrowsAdvice(异常通知)

4.        Spring aop配置:

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

   http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

     <!-- 目标类 -->

     <beanid="target_1"class="com.aop.Waiter"/>

     <!-- 后置通知 -->

     <beanid="after"class="com.aop.AfterAdvice"></bean>

     <!-- 前置通知 -->

     <beanid="proxybean"class="org.springframework.aop.framework.ProxyFactoryBean">

           <propertyname="proxyInterfaces">

               <!-- 接口接入     注入使用了接口,则使用JDK动态代理->

             <value>com.aop.IWaiter</value>

           </property>

            <!-- 默认false使用jdk动态代理

            <property name="proxyTargetClass" value="true"/>

-->

           <propertyname="interceptorNames">

              <list>

                <!-- 通知类引入 -->

                <value>before</value>

                <value>after</value>

               </list>

           </property>

           <!-- 注入要通知的目标类 -->

           <propertyname="target"ref="target_1"/>

      </bean>

</beans>

 

Spring aop提供代理工厂bean,不用自己写,但是要指定属性注入要执行通知实现类。

<propertyname="proxyInterfaces">   注入目标接口

<propertyname="interceptorNames"注入要通知的实现类列表

<propertyname="target"ref="target"/>  注入要通知的目标类

<propertyname="proxyTargetClass"value="true"/>默认jdk代理

Spring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代理。

如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理

如果该目标对象没有实现任何接口,则创建一个CGLIB代理。

Spring AOP面向切面编程详解(基于XML方式 注解方式 注入Aspectj方式)

AOP:即面向切面编程,是一种编程思想,OOP的延续。在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等等。耐心看完本篇文章,会对理解AOP有一定的帮助。1.了解AOP相关术语(如有...
  • RobertoHuang
  • RobertoHuang
  • 2017-04-12 22:38:40
  • 9731

Spring AOP配置选项

Spring实现动态代理配置是有两种配置文件:1、   xml文件方式;2、   annotation方式(使用AspectJ类库实现的。)一、       AOP配置annotation方式(一) ...
  • voyage_mh1987
  • voyage_mh1987
  • 2010-08-18 15:39:00
  • 9153

spring AOP 之 xml 配置实现(附 Java 代码实例)

首先这个配置模式估计现在已经不用了,因为我在我们公司的项目里面并没有看到这么配置AOP相关的东西。虽然公司项目使用的是3.1,而我学习的这个版本是2.5。 不过,这个就和学习spring的控制反转(I...
  • qq_27093465
  • qq_27093465
  • 2016-11-27 22:07:53
  • 2963

Spring -- 基于XML的AOP通知配置

上一篇博客,我们学习了基于注解配置AOP。下面我们基于XML来配置AOP。看代码public interface Calculation { public int add(int x, int ...
  • u010926176
  • u010926176
  • 2015-07-30 16:06:18
  • 1337

spring采用aop配置事务管理的样例

采用aop配置事物管理的样例 1、 其含义就是支持注解; 2、           如上,配置事物的转播性特性,SUPPORTS:表示当前方法不需要事务上下文,但是如果存在当...
  • taoaic
  • taoaic
  • 2016-11-25 15:49:22
  • 1156

【Spring aop】Spring aop的XML和注解的两种配置实现

一:XML形式配置
  • flysun3344
  • flysun3344
  • 2016-06-15 11:42:19
  • 5367

Spring的AOP基于xml常用的几种配置

一般spring的AOP实现方式有二中 1、spring-aop自己实现与IOC结合使用,也是我们最常用的方式 2、使用AspectJ,即注解的方式 个人觉得,spring中使用配置文件还是比较...
  • u011955252
  • u011955252
  • 2016-10-27 14:10:05
  • 1385

spring aop事务配置,事务回滚

1、首先说一下新手的一些误区,不要把service层用的跟dao层是一个模式了,一个service可以管理多个dao,把多个dao集成为一个事务过程,一个action对应一个service,因为在程序...
  • qw463800202
  • qw463800202
  • 2015-07-20 10:48:06
  • 5330

手动实现Spring Aop

Aop,百度百科的解释:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OO...
  • rickiyeat
  • rickiyeat
  • 2017-01-22 22:13:05
  • 2234

spring aop切面动态代理xml配置实现

上次我已经写过aop用注解实现的这次是用配置实现,个人感觉配置实现比较好,毕竟程序是给人看的吗,配置里写的一清二楚,别人看来也好懂,而且配置修改起来也比较容易,便于后期维护及修改,而才用注解方式的修改...
  • do_bset_yourself
  • do_bset_yourself
  • 2015-10-24 12:41:54
  • 1702
收藏助手
不良信息举报
您举报文章:Spring 配置实现AOP
举报原因:
原因补充:

(最多只允许输入30个字)