Spring Aop

 大家应该明白一个道理,所有广为人用的框架/技术等.基本都是两个目的:

1.软件开发期(写代码,测试,上线)内,让开发人员用更少的代码完成同样的功能实现.

2.软件上线后的维护升级器,让让开发人员用更少的代码完成同样的功能实现.

记住这两条,然后我们来看看AOP到底是什么,以及在什么地方能够让我们少写代码?

 

1.AOP是什么?
面向切面编程,能够让我们在不影响原有功能的前提下,为软件横向扩展 功能 .

2.在什么地方能够让我们少写代码?
要回答问题2,首先解决"横向"扩展什么意思?

理解了这个词基本就能理解AOP了.

软件开发可分为"持久层" "业务层" 控制器层"

所谓的"横向"就是指上面说到的三个层里的任意一层!

 使用AOP技术后,用一个方法,就能同时作用与一个层面内所有方法!

上句话不容易理解,栗子来了!

写日志是一个很好的编程习惯,不用AOP技术的话,我们应该怎么写日志?

  System.out.println("方法a开始执行");

 public void a(){

    System.out.println("我是一个方法");

}

 System.out.println("方法a执行成功");

上述是一个很简单的日志.两行代码也不多.

可是在真实开发中,面对100个甚至1000个方法时,这样写你会不会被累死?

如果用AOP的话,我们用一个方法就可以搞定所有的日志!

 <!-- 目标对象  当调用的时候 imp-->
    <bean class="com.zking.dao.ImpPersonDao1" id="ImpPersonDao1"></bean>
    
 <!-- 前置对象-->
    <bean class="com.zking.fv.MyMethodBeforeAdvice" id="MyMethodBeforeAdvice"></bean>
 
<!-- 生成【代理】(目标+通知) ref弄的是id  -->
    <bean class="org.springframework.aop.framework.ProxyFactoryBean" id="myFactoryBean">
         <!-- 调用前置环绕 结合 1+2 name是特定的值 无法改变 【目标’ -->
         <!-- 可以设置很多你需要实现的类. -->
         <property name="target" ref="ImpPersonDao1"></property>
           <!-- 代理工厂需要实现的接口对象 【代理】 -->
         <property name="proxyInterfaces">
                <list>
                    <!-- 你要实现的接口 -->
                   <value>com.zking.dao.PersonDao</value>
                </list>
         </property>
           <!-- 实现前置通知  【引入】-->
           <property name="interceptorNames">
                <list>
                      <!-- 在方法之前调用 -->
                      <value>MyMethodBeforeAdvice</value>
                </list>
         </property>
    </bean>
<!--  重复代码就可以不用写啦 -->

OK!,搞定.现在所有业务层的方法执行前后都会打出日志了!.

一个方法搞定了需要机械重复的复制粘贴几百行的工作!世界美好了.
因情况而异 >因为每个逻辑层面里你可能处理不同的方法 

当你的日志信息需要保持一致的话  那么使用 Spring  bean

@Around("bean(*Service)")//指定要监控的bean中的方法
public Object testObject(ProceedingJoinPoint jp) throws Throwable{ //参数的意思是代理执行原软件中的方法
System.out.println(jp.getSignature()+"开始执行"); //在方法执行之前执行
Object val = jp.proceed();    
System.out.println(jp.getSignature()+"执行成功");//在方法执行之后执行
return val;    
}
一篇关于分享博客

https://www.cnblogs.com/bdpsc/p/5955494.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值