b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

几种实现Spring AOP应用程序的方式

电脑杂谈  发布时间:2020-03-27 03:08:58  来源:网络整理

spring aop 四种方式_spring aop 几种方式_spring aop注解方式

全部展开

Spring提供了三种开发aop应用程序的方法: 第一: 在Spring 1.2中,aop是通过ProxyFactoryBean(即动态代理)实现的. Aspect必须继承MethodBeforeAdvice,MethodAfterAdvice等! bean id =“ man” class =“ Man”>

<属性名称=“名称”>

<值类型=“ java.lang.String”>张三

<!-Aspect->继承自MethodBeforeAdvice

class =“ org.springframework.aop.framework.ProxyFactoryBean”>

<属性名称=“ target”>

<列表>

fbi

二: Spring 2.0 AOP应用程序需要更改FBI类,并且不需要实现某些接口公共类FBI {

(JoinPoint点)之前的公共无效{

Man man =(Man)point.getTarget();

System.err.println(“ FBI发现” + man.getName()+“进行中” +

point.getSignature(). getName()+“ Activity. ”);

}

}请注意此类中(JoinPoint)之前的方法,该方法的名称可以是任意的,并且可以带一个JoinPoint类

类型参数也可以像没有参数的before()一样编写,但是此JoinPoint对象带来了所有必要的条件

有与此方法调用相关的信息spring aop 几种方式,包括方法参数,目标对象等,因此,如果要一般地记录它,则

带上它.

下面是测试类的代码,与上一个几乎没有什么不同,但是现在它可以直接访问该人了

这个豆.

xmlns: xsi =“;

xmlns: aop =“;

xsi: schemaLocation =“

;>

spring aop 几种方式_spring aop 四种方式_spring aop注解方式

<属性名称=“名称”>

<值类型=“ java.lang.String”>张三

expression =“执行(*手动*(..))” />

1. aop名称空间添加在配置文件的开头spring aop 几种方式,如代码中的粗斜体所示.

2. 使用aop: config标记来定义AOP,而不是使用ProxyFactoryBean来定义新的

豆. 一个是人类物体,另一个是

FBI特工. 而aop: config定义所有AOP设置信息. aop: 切入点

定义切入点,id给出切入点的唯一名称,表达式定义切入点的表达式

,那么这个定义到底是什么意思?这意味着代表一个场景,即执行

Man对象的所有方法都是这种情况,这就是表达式执行(* Man. *(..))的含义,

伙计. *(..)代表Man类的所有方法. 接下来,我们需要定义一个方面,该方面由aop: 方面定义,

其ref属性指定与此方面相对应的bean定义的ID,该ID指向fbi的bean类;子标签

aop: “之前”指示何时发生名为manPointcut的切入点(案例)(使用pointcut-ref属性

指定,pointcut-ref =“ manPointcut”),然后调用之前命名的方法,该方法位于方面中

在引用的Bean中

,这里是fbi(即ref =“ fbi”). 实际上,Spring在这里执行后,它将自动

将此代码转换为基础的bean定义(诸如ProxyFactoryBean之类的机制仍将在后台使用)

然后将直接获取Bean的操作委托给代理类,这就是为什么上面提到的测试类只需要

访问原始man bean的原因,将执行相应的拦截类. 从Spring 2.0看到这里

定义AOP bean类仍然相对复杂,并且XML文件和概念已添加很多,需要读者

慢慢学习和理解. 第三,使用批注(@AspectJ)实现用于切入点解析和匹配的AOP库.

为了在Spring配置中使用@AspectJ方面,必须首先基于@AspectJ启用Spring

方面配置支持. 自动代理基于通知是否来自这些方面. 自动代理是

这意味着Spring将确定bean是否使用了一个或多个方面通知,并相应地自动生成相应的代理

spring aop 四种方式_spring aop注解方式_spring aop 几种方式

拦截其方法调用并确认通知正在按预期进行.

通过在Spring配置文件中引入以下元素,为@AspectJ启用Spring支持:

您还可以通过在应用程序上下文中添加以下定义来启用@AspectJ支持:

class =“ org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyC

reator“ />

您需要在应用程序的类路径中引入两个AspectJ库: Aspectjweaver.jar和

aspectjrt.jar. 添加Spring开发功能时,我们在此处使用的MyEclipse已自动添加了这些功能.

类库文件,无需手动配置.

定义方面: 启用@AspectJ支持后,Spring将自动识别并使用在应用程序上下文中使用@Aspect方面定义的任何bean(带有@Aspect批注)

在Spring AOP中配置.

定义切入点: 现在通过在@AspectJ注释的AOP中签名切入点

通过通用方法定义提供,并且切入点表达式使用@Pointcut批注表示(作为切入

由入口点签名的方法必须返回void). 该代码可以参考清单10.12.

好的,参考这些文档,我们需要介绍基于注释的这个新的AOP项目,这个项目

名称为Spring2_0AOPAspectJ. 如上一节所示添加Spring核心和AOP类库之后,您可以

已开发. 然后,与使用AOP标签的10.4.1 AOP实现相比,该项目的代码只有两个地方.

方想改变. 首先,我们需要修改FBI类的源代码,并添加注释以实现切割平面和切割点的定义,如下所示:

导入org.aspectj.lang.JoinPoint;

导入org.aspectj.lang.annotation.Aspect;

导入org.aspectj.lang.annotation.Before;

/ **

* FBI代理记录您的所有动作.

* @author BeanSoft

* /

@Aspect

FBI公共类{

@Before(“执行(*手动*(..))”)

(JoinPoint点)之前的公共无效{

Man man =(Man)point.getTarget();

System.err.println(“ FBI发现” + man.getName()+“进行中” +

point.getSignature(). getName()+“ Activity. ”);

spring aop 四种方式_spring aop注解方式_spring aop 几种方式

}

}

列出带有Aspect注释的10.12 FBI类

此类中@Before之后的“执行(* Man. *(..))”是与切入点相对应的切入点表达式,其含义

含义与上一节中的相同. 这仍然意味着Man类的所有方法的执行都会触发该方法的执行.

使用此符号,将大大简化XML配置文件,其内容如下:

<? xml version =“ 1.0” encoding =“ UTF-8”?>

xmlns: xsi =“;

xmlns: aop =“;

xmlns: tx =“;

xsi: schemaLocation =“

;>

<属性名称=“名称”>

<值类型=“ java.lang.String”>张三

1.添加了粗斜体定义;

2. 删除了标记.

您可以看到,使用此方法使AOP的开发和配置非常容易. 这是JDK 1.5的介绍.

从中受益. 当然,缺点是必须重新编译源代码才能修改配置.

注意: 您不能在这里删除的定义,否

自动AOP代理对象将没有机会创建和工作. 在这种情况下,无法谈论man对象.

结束了. 围绕咨询@Aspect的AOP应用程序的四项开发

FBI公共类{

@Around(“执行(*手动*(..))”)

(ProceedingJoinPoint点)之前的公共对象抛出Throwable {

Man man =(Man)point.getTarget();

System.err.println(“ FBI发现” + man.getName()+“即将推出” +

point.getSignature(). getName()+“ Activity. ”);

//禁止张三泡泡MM

spring aop注解方式_spring aop 四种方式_spring aop 几种方式

if(point.getSignature(). getName(). equals(“ mm”)){

System.err.println(“ FBI将阻止” + man.getName()+“气泡MM”. )

}否则,如果(point.getSignature(). getName(). 等于(“ sayHelp”)){

System.err.println(“ FBI将欺骗“ + man.getName()+”

的朋友

告诉他们很好. “);

返回“我是” + man.getName()+“我现在很好. ”

}否则{Object object = point.proceed();
System.err.println(“找到FBI” + man.getName()+“已完成” +
point.getSignature(). getName()+“活动”. );
返回对象;
}

返回null;

}

}张三不仅不是MM,当他寻求帮助时,FBI还可以直接截取并修改它,并请求

消息“救救我,我是张三!”更改为“我是张三,我现在很好. ”通过欺骗的方式,张三

朋友永远不知道发生了什么. / **

*具有三种行为的Person对象: QQ和MM,帮助和用户名属性.

* @author BeanSoft

* /

公共阶层的人{

私有字符串名称;

公共字符串getName(){

返回名称;

} public void setName(字符串名称){

this.name = name;

}

公共无效qq(){

System.out.println(“我在聊天QQ”);

}

公共空隙mm(){

System.out.println(“我在MM中”);

}

公共字符串sayHelp(){

返回“救救我,我就是” + getName();

}

}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-153683-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 顾靓京
        顾靓京

        很多核心技术还是差很远的

      • 张阿康
        张阿康

        还送好多东西

      • 武藤环
        武藤环

        因为直接守住小日本的出口要道

      热点图片
      拼命载入中...