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

实现步骤:

一,导入aop标签

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

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

然后依据选择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();
}

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

  1. [转载]JavaEE学习篇之——JQuery技术详解

    原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/32102187 1.简介2.工具3.jQuery对象 1.DOM对象转化成j ...

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

    OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够 ...

  3. java的JSP技术

    java的JSP技术 [toc] 1.JSP简介 Jsp技术是用来开发java web的页面显示的,所有MVC模型里面的视图层,所以视图层的开发 jsp不是编程语言,三个英文是java server ...

  4. 面向切面编程AOP

    本文的主要内容(AOP): 1.AOP面向切面编程的相关概念(思想.原理.相关术语) 2.AOP编程底层实现机制(动态代理机制:JDK代理.Cglib代理) 3.Spring的传统AOP编程的案例(计 ...

  5. Servlet,jsp,JSP技术 ,JSP编程

     一.Servlet 思考 1 浏览器可以直接打开JAVA/class文件吗? 不可以 2浏览器可以打开HTML.JS 文件吗? 可以 3 JAVA程序可以生成HTML文件吗?可以的,用IO流. 4 ...

  6. 12、Jsp加强/自定义标签/JavaBean

    1 Jsp加强回顾 Jsp加强 1)Jsp的9大内置对象 request       HttpServletRequet response     HttpServletResponse config ...

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

    前言:如果说html为静态网页基础,那么jsp就是动态网页基础,两者的区别就是jsp在html的前面多加了几行而已.当然,jsp里面对java的支持度更高.要明白,js只是嵌入在客户端的小程序小脚本而 ...

  8. 学习日常笔记<day14>自定义标签

    1自定义标签 1.1第一个自定义标签开发步骤 1)编写一个普通的java类,继承SimpleTagSupport类,叫标签处理器类 /** * 标签处理器类 * @author APPle * 1)继 ...

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

    前面介绍了下Spring中的切面技术.如今说下採用注解的方式进行切面 首先肯定和之前的一样.须要一个自己主动代理的注解类 AnnotationAwareAspectJAutoProxyCreator ...

随机推荐

  1. nginx可用来干什么?

    1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML.图片)通过HTTP协议展现给客户端. 配置: server { listen80; # 端口号 lo ...

  2. JavaEE-04 数据源配置

    学习要点 JNDI 数据库连接池 完成新闻发布系统数据库连接池 JNDI 说明 JNDI(Java Naming and Directory Interface),中文翻译为Java命名与目录接口,是 ...

  3. 第一个WebDriver脚本

    1.cmd下安装selenium,输入pip install selenium 2.下载Firefox浏览器的驱动程序,https://github.com/mozilla/geckodriver/r ...

  4. modify django app models.py adn settings.py

    from django.db import models from django.contrib import admin # from personal import models class Us ...

  5. bzoj3336 Uva10572 Black and White

    题目描述: 数据范围:2<=n,m<=8 题解: 很明显需要状压.但是怎么压不知道,压什么不知道. 然后从条件下手. 条件1要求黑色在一起白色在一起,记录轮廓线很容易做到. 条件2要求不能 ...

  6. MySQL本地登录及数据库导入导出

    注意:本地MySQL服务要开启 更新整个数据库 1.将正式服务器上的数据库做备份 登录到正式服务器,执行如下命令:(注意空格) mysqldump -uroot –p密码 数据库名 -P 接口 --d ...

  7. 8. Truncate undo表空间

    8. Truncate undo表空间 要Truncate Undo 表空间,必须为MySQL实例配置至少两个undo表空间(两个undo表空间可确保一个undo表空间保持活动状态,另一个处于脱机状态 ...

  8. nginx的配置和基本使用命令

    配置文件基本说明 配置文件位置:/usr/local/nginx/conf/nginx.conf #设置用户群,nobody代表低权限用户 #user nobody; #工作衍生进程数,通常代表CPU ...

  9. 老男孩老师的博客地址 - 转自devops1992

    害怕他那天不让人看了,所以我就复制一份到我自己的博客里. http://www.bootcdn.cn/bootstrap/  bootstrap cdn在线地址 http://www.cnblogs. ...

  10. Django 1.8.11 REST风格路由

    # -*- coding: utf-8 -*- """ Tencent is pleased to support the open source community b ...