javaEE之------ApectJ的切面技术===标签

如今比較流行了aop技术之中的一个========标签

实现步骤:

一,导入aop标签

方法,打开aop包。里面就有。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >这个里面就有

然后依据选择spring的版本号。

在配置文件里配置

例如以下:

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

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

xmlns:context="http://www.springframework.org/schema/context"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

这样就导入了aop标签

二,配置切点和通知

<aop:config>
		<aop:aspect ref="myadvior"><!-- 须要导入作为切面的类-->
			<aop:pointcut expression="execution(* cn..Person.*(..))" id="cut"/>
			<aop:before method="test1" pointcut-ref="cut"/> <!-- 这是通知,拦截切点位置。也就是拦截时  须要做的事情 -->
			<aop:aftermethod="test1" pointcut-ref="cut"/> <!-- 拦截核心之后运行的动作,所有写在test1方法里面了 -->
			<!-- <aop:before method="test1" pointcut="execution(* cn..Person.*(..))"/> 这样也是能够的,就不用切点了,直接写在这里面 -->
		</aop:aspect>
	</aop:config>	

里面的配置通知类型非常多

三。被代理类以及自己主动注解类

<span style="font-size:18px;"><!-- 须要的三元素 (被代理类, 自己主动代理类,切面)採用标签。切面和之前的有点不同。仅仅是一个简单的pojo导入 -->
	<bean id="person" class="cn.aop.aspectj3.Person"></bean></span>
<span style="font-size:18px;"> <!-- 注解自己主动标签,自己主动去查找带有注解的类和方法 -->
<span style="white-space:pre">	</span> <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
</span>

四。导入我们作为切面的类

<bean class="cn.aop.aspectj3.MyAdvisor" id="myadvior"/><!--当做切面的pojo 注入 -->

配置文件已经完毕。

五,被导入的作为切面的类

public class MyAdvisor {

		public void test1(){
			System.out.println("这是test...");
		}
}

非常普通的一类。方法名在配置切面里面,通知的时间也完毕了。。这里就能够实现想要完毕的动作了。

标签相当于之前的,有非常大的优化,如在核心模块全然不知道是都做了拦截,进一步实现了解耦。

=========================这里已经介绍完====================

源码以及測试

1,配置文件

<?

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:context="http://www.springframework.org/schema/context"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xmlns:aop="http://www.springframework.org/schema/aop"
		xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
				http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
				http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
				http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

	<!-- 须要的三元素 (被代理类。 自己主动代理类,切面)採用标签,切面和之前的有点不同,仅仅是一个简单的pojo导入 -->
	<bean id="person" class="cn.aop.aspectj3.Person"></bean>

	<!-- 自己主动代理注解
	<bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator"></bean>
	 -->
	 <!-- 注解自己主动标签,自己主动去查找带有注解的类和方法 -->
	 <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

	<aop:config>
		<aop:aspect ref="myadvior">
			<aop:pointcut expression="execution(* cn..Person.*(..))" id="cut"/>
			<aop:before method="test1" pointcut-ref="cut"/> <!-- 这是通知,拦截切点位置。也就是拦截时  须要做的事情 -->
			<aop:aftermethod="test1" pointcut-ref="cut"/> <!-- 拦截核心之后运行的动作。所有写在test1方法里面了 -->
			<!-- <aop:before method="test1" pointcut="execution(* cn..Person.*(..))"/> 这样也是能够的。就不用切点了,直接写在这里面 -->
		</aop:aspect>
	</aop:config>	

	<bean class="cn.aop.aspectj3.MyAdvisor" id="myadvior"/><!--当做切面的pojo 注入 -->
</beans>

2,  作为切面的类

package cn.aop.aspectj3;

public class MyAdvisor {

		public void test1(){
			System.out.println("这是test...");
		}
}

3,被代理的对象

package cn.aop.aspectj3;

public class Person {

	public void say(){
		System.out.println("...这是say..");
	}

	public void run(){
		System.out.println("这是person中的 run方法");
	}

}

4,測试

@Test
	public void Test2(){
		ApplicationContext context =new ClassPathXmlApplicationContext("cn/aop/aspectj3/aspectj3.xml");
		Person p =context.getBean(Person.class);
		p.run();
		p.say();
	}
时间: 2024-10-08 17:30:32

javaEE之------ApectJ的切面技术===标签的相关文章

javaEE——Spring 四种切面技术(拦截)、获取Spring容器的两种办法

Spring AOP编程 切面(Aspect):简单的理解就是把那些与核心业务无关的代码提取出来,进行封装成一个或几个模块用来处理那些附加的功能代码.(如日志,事务,安全验证)我们把这个模块的作用理解为一个切面,其实切面就是我们写一个类,这个类中的代码原来是在业务模块中完成的,现在单独成一个或几个类.在业务模块需要的时候才织入. 连接点(Joinpoint):在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候. 在Spring AOP中,一个连接点总是代表一个方法的执行.通过声

[转载]JavaEE学习篇之--JQuery技术详解

原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/32102187 1.简介2.工具3.jQuery对象 1.DOM对象转化成jQuery对象 2.jQuery对象转化成DOM对象4.jQuery选择器 1.基本选择器 2.层次选择器 3.过滤选择器 4.基础过滤选择器 5.内容过滤选择器5.可见度过滤选择器 1.属性过滤选择器 2.子元素过滤选择器 3.表单对象属性过滤选择器 4.表单选择器6.jQuery中的DOM操作

Spring(十一)使用Spring的注解方式实现面向切面技术AOP

AOP涉及到的一些概念: Aspect(切面):横切性关注点的抽象即为切面,与类相似,只是两者的关注度不一样,类是对物体特征的抽象,而切面是横切性关注点的抽象. Joinpoint(连接点):所谓连接点指那些被拦截的点.在Spring中,这些点指的是方法,因为Spring只支持方法类型的连接点(实际上Joinpoint还可以是field或类构造器). Pointcut(切入点):所谓切入点是指我们要对那些Joinpoint进行拦截的定义. Advice(通知):所谓通知是指拦截到Joinpoin

[JavaEE] 深入理解Struts2的ognl标签

OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能.此外,还得先需弄懂OGNL的一些知识: 1.OGNL表达式的计算是围绕OGNL上下文进行的.OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类表示.它里面可以存放很多个JavaBean对象.它有一个上下文根对象.上下文中的

Servlet,jsp,JSP技术 ,JSP编程

 一.Servlet 思考 1 浏览器可以直接打开JAVA/class文件吗? 不可以 2浏览器可以打开HTML.JS 文件吗? 可以 3 JAVA程序可以生成HTML文件吗?可以的,用IO流. 4 浏览器解析的时候是需要HTTP协议的,JAVA普通类有没有HTTP协议呢? 普通类没有. JAVA-(class)浏览器如何访问呢? 浏览器---HTML A   JAVA通过IO流生成HTML--->浏览器 B   JAVA 需要加入HTTP协议 解决上面2个问题可以通过 Servlet C  如

Jsp开发常用标签总结

Jsp开发常用标签总结 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1]  是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动态网页技术标准.JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp). 用JSP开发的Web应用是跨平台的,

javaEE之------Spring-----》 AspectJ注解

前面介绍了下Spring中的切面技术.如今说下採用注解的方式进行切面 首先肯定和之前的一样.须要一个自己主动代理的注解类 AnnotationAwareAspectJAutoProxyCreator 配置文件里的代码: <?xml version="1.0" encoding="UTF-8"? > <beans xmlns="http://www.springframework.org/schema/beans" xmlns:x

JSP技术基础(动态网页基础)

JSP不能直接运行,需要翻译. Jsp执行过程 翻译阶段 Jsp被web容器中的jsp引擎转换为java源码 .class 编译阶段 源码被翻译为.class文件,字节码文件. 执行阶段 部署服务器的过程其实就是编译的过程,web获取客户端的请求后,web开始执行字节码文件. 如果内容被更改,需要重新部署 系统里面有原来的.class文件,就会执行原来的文件,不会执行这个. ? Jsp页面的组成: 静态内容:html静态文本 指令 : <%@ 开始 %> 结束 表达式 :<%=java表

JavaEE云计算大数据全套视频

 http://feixueteam.net/thread-392-1-1.html 日期   课程(空内容代表放假) 讲师 注意:课表每个月都会更新一到两次,在月底会决定下个月的带课老师,另外课程的上课顺序会有些微调 2013/4/25 星期四 开学典礼()   俗话说:一分耕耘一分收获.从进入传智播客的第一天起,各位同学就要做好吃苦的准备,克制自己不看电影,不打游戏,课下勤动手练习,相信大家经历四个多月魔鬼般的学习,都会收获丰硕的成果.考虑到有些同学自制力不强,总会不自觉打游戏看电影,为了对