定义一个包含增强方法的javaBean(最终增强)

使用Schema

1.AroundLogger类

 1 //定义一个包含增强方法的javaBean
 2 public class AroundLogger{
 3     //注解方式的环绕增强处理
 4     private static final Logger log = Logger.getLogger(AroundLogger.class);
 5     public Object aroundLogger(ProceedingJoinPoint jp){
 6         log.info("a调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法,方法参数是:"
 7                 +Arrays.toString(jp.getArgs()));
 8         try {
 9             Object result = jp.proceed();//调用目标方法,获取目标方法的返回值
10             log.info("a调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法,方法返回值是:"
11                     +result);
12             return result;
13         } catch (Exception e) {
14             log.error(jp.getSignature().getName()+"方法抛出异常"+e);
15             e.printStackTrace();
16         } catch (Throwable e) {
17             // TODO Auto-generated catch block
18             e.printStackTrace();
19         }
20         return null;
21     }
22 }

2.spring配置文件

 1     <bean id="dao" class="com.dao.impl.IUserDaoImpl"></bean>
 2     <bean id="biz" class="com.biz.impl.IUserBizImpl">
 3         <property name="dao" ref="dao"></property>
 4     </bean>
 5     <!-- 声明增强方法所在的类 -->
 6     <bean id="thelogger" class="com.aop.AroundLogger"></bean>
 7     <!-- 配置切面 -->
 8     <aop:config>
 9     <!-- 定义切入点 -->
10         <aop:pointcut expression="execution(* com.biz.IUserBiz.* (..))" id="pointcut"/>
11         <!-- 引入包含增强的bean -->
12         <aop:aspect ref="thelogger">
13             <!--将aroundLogger方法定义为最终增强并引入切入点  -->
14             <aop:around method="aroundLogger" pointcut-ref="pointcut"/>
15         </aop:aspect>
16     </aop:config>

3.测试类同使用Schema配置切面

4.测试结果

时间: 2024-10-03 13:09:54

定义一个包含增强方法的javaBean(最终增强)的相关文章

C#1(.net和C#的关系、VS与.net的对应关系、VS2012常用的几种应用程序、C#定义一个类的方法、类页面内容的解释、定义Person的类、调用Person类的方法、命名规范、数值类型)

1..net和C#的关系 .net是一个开发平台,C#是应用在.net平台上的一种语言.   2.VS与.net的对应关系  3.VS2012常用的几种应用程序 第一种是Windows窗体应用程序,也即是我们常用的C/S端的应用软件: 第二种是控制台应用程序,主要是用来学习调试C#代码的(老师上课应用的模式): 第三种是空Web应用程序,建立空的网页模式,B/S模式: 第四种是Web 窗体应用程序,建立后会生成一些常用的网页组件和功能,例如JS.image等,也是B/S模式. 4.C#定义一个类

类的继承定义一个computer类在此基础上派生出两个子类(继承与多态绑定)

题目如下 定义一个计算机类(Computer),并在它的基础上派生出两个子类:台上机(Desktop)和便携机类(Notebook),在Computer中定义几个方法,并在子类Desktop和Notebook中覆盖这些方法.在main方法中利用对象类型转换将类Desktop和Notebook的对象分别赋值给Computer对象,并应用多态调用这些方法. 实验目的 (1)       理解继承的概念,掌握继承的语法. (2)       学习定义和使用子类. (3)       掌握继承过程中的方

java定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积

需求如下:(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积. (2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下: public void printAreas(Cirlce c, int times) 在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积.例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积. 在main方法

定义一个复数(z=x+iy)类Complex,包含: 两个属性:实部x和虚部y 默认构造函数 Complex(),设置x=0,y=0 构造函数:Complex(int i,int j) 显示复数的方法:showComp()将其显示为如: 5+8i或5-8i 的形式。 求两个复数的和的方法:(参数是两个复数类对象,返回值是复数类对象)public Complex addComp(Compl

因标题框有限,题目未显示完整,以下再放一份: 定义一个复数(z=x+iy)类Complex,包含: 两个属性:实部x和虚部y 默认构造函数 Complex(),设置x=0,y=0 构造函数:Complex(int i,int j) 显示复数的方法:showComp()将其显示为如: 5+8i或5-8i 的形式. 求两个复数的和的方法:(参数是两个复数类对象,返回值是复数类对象)public Complex addComp(Complex C1,Complex C2) 求两个复数的差的方法:(参数

发现一个类的方法不够用时,可以使用的3种方法可以增强

A.创建子类,改写需要增强的方法B.包装设计模式//1.定义一个类,实现与被增强对象相同的接口//2.在类中定义一个变量,记住被增强对象//3.定义一个构造对象,接受被增强对象//4.覆盖想增强的方法//5.对于不想增强的方法,直接调用目标对象的方法C.使用动态代理(aop面向切面编程) //视频讲解: 方立勋javaweb30天教程-就业办16/day16avi/03-数据库连接池.avi https://pan.baidu.com/s/1eQBvrRc#list/path=%2F%E6%96

“ASP.default_aspx”并不包含“DropDownList1_SelectedIndexChanged”的定义,其解决方法。

在使用DropDownList控件的DataBind方法,将ArrayList数组绑定在DropDownList空间中,执行程序, 出现错误: 错误 : "ASP.default_aspx"不包含"DropDownList1_SelectedIndexChanged"的定义,并且找不到可接受类型为"ASP.default_aspx"的第一个参数的扩展方法"DropDownList1_SelectedIndexChanged"(

定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容。提示(可以了解python的urllib模块)

1 定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容.提示(可以了解python的urllib模块) 2 import urllib.request 3 4 def get_page(url): 5 response = urllib.request.urlopen(url) 6 html = response.read() 7 return html 8 9 print(get_page(url='https://www.baidu,com'))

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象。

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 语法EDIT Object.defineProperty(obj, prop, descriptor) 参数 obj 需要定义属性的对象. prop 需定义或修改的属性的名字. descriptor 将被定义或修改的属性的描述符. 返回值 返回传入函数的对象,即第一个参数obj 描述EDIT 该方法允许精确添加或修改对象的属性.一般情况下,我们为对象添加属性是通过

自己定义一个Dialog样式的Activity窗体,切换到Dialog的方法

首先定义一个style 在style里面加入 <style name="MyDialog" parent="@android:Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name=