<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName"> <!-- 配置代理关系 -->
<!-- 目标类 被代理人对象 -->
<bean id="target" class="dao.imp.UserDaoImp"></bean>
<!-- 切面 方面代码(通知代码)-->
<bean id="roundAdvice" class="aop.RoundAdvice"></bean> <!-- 代理类 代理人对象-->
<bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <!-- 代理用到的接口 拦截者:指明方法代码的封装对象-->
<property name="proxyInterfaces">
<list>
<value>dao.UserDao</value>
</list>
</property> <!-- 目标对象 指明被代理人-->
<property name="target" ref="target">
</property> <!-- 切面 拦截者 :指明方面代码的封装对象 -->
<property name="interceptorNames">
<list>
<!-- <value>beforeAdvice</value> -->
<value>pointcutAndAdvice</value>
</list>
</property>
</bean>
<!-- 配置带切入点的bean
进一步封装代码 ,提供过滤被代理方法的功能 。效果 :被代理接口中方法集合的子集被代理执行-->
<bean id="pointcutAndAdvice" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="roundAdvice"></property>
<property name="patterns">
<list>
<value>dao.UserDao.saveUser</value>
<value>dao.UserDao.deleteUser</value>
</list>
</property>
</bean>
</beans>

applicationContext-round.xml

package aop;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation; public class RoundAdvice implements MethodInterceptor{ @Override
public Object invoke(MethodInvocation method) throws Throwable {
// TODO Auto-generated method stub
System.out.println("开始");
Object obj=method.proceed();
System.out.println("结束"); return null;
} }

RoundAdvice.java

 import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import dao.UserDao; public class TestAop { public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext ctx=new ClassPathXmlApplicationContext("/applicationContext-aop.xml");
//获取文件
UserDao dao=(UserDao) ctx.getBean("proxy");
//得到代理
dao.saveUser();
dao.deleteUser();
dao.findUser();
} }

test.java

aop编程 环绕round的更多相关文章

  1. 使用spring方式来实现aop编程

    1:什么是aop? Aspect Oriented Programming 面向切面编程 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译 ...

  2. Aop编程--注解与xml的实现

    一.注解方式 1.首先引入spring对于aop编程的jar支持包,spring框架没有的包请自行在网上下载. aopalliance-alpha1.jar aspectjrt.jar aspectj ...

  3. AOP编程,spring实现及JDK,CGLIB实现

    什么是AOP? AOP(Aspect-OrientedProgramming,面向方面编程)和OOP(Object-Oriented Programing,面向对象编程)思想不同,两者并非对立关系,前 ...

  4. Spring框架--AOP编程

    2 手动实现AOP编程 AOP 面向切面的编程, AOP可以实现"业务代码"与"关注点代码"分离 // 保存一个用户 public void add(User ...

  5. Spring之AOP编程

    一.AOP简介     AOP的英文全称是Aspect Oriented Programming,意为:面向切面编程.     AOP采取横向抽取的机制,取代了传统纵向继承体系的代码复用.AOP常用于 ...

  6. Java基础-SSM之Spring的AOP编程

    Java基础-SSM之Spring的AOP编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   Spring的本质说白了就是动态代理,接下来我们会体验AOP的用法.它是对OOP的 ...

  7. Spring的AOP编程

    1.手动实现AOP编程(代理模式) AOP是面向切面的编程,主要功能就是实现"业务代码"和辅助业务代码的"关注点代码"分离.在一个方法中,出了核心的业务代码,其 ...

  8. spring AOP编程--AspectJ注解方式

    1. AOP 简介 AOP(Aspect-Oriented Programming, 面向切面编程): 是一种新的方法论, 是对传统 OOP(Object-Oriented Programming, ...

  9. Spring入门3.AOP编程

    Spring入门3.AOP编程 代码下载: 链接: http://pan.baidu.com/s/11mYEO 密码: x7wa 前言: 前面学习的知识是Spring在Java项目中的IoC或DJ,这 ...

随机推荐

  1. CSS3属性值之box-shadow

    语法:   box-shadow:inset x-offset y-offset blur-radius spread-radius color 也就是:   对象选择器 {box-shadow:投影 ...

  2. SAP HANA 开发者中心(Developer Center)入门指南

  3. 建立&修改视图

    一.建立视图 IF OBJECT_ID('Sales.OrderTotalsByYear', 'V') IS NOT NULL DROP VIEW Sales.OrderTotalsByYear; G ...

  4. LightOJ 1317

    Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %lluDescription You probab ...

  5. STL之stack(栈)

    栈(statck)这种数据结构在计算机中是相当出名的.栈中的数据是先进后出的(First In Last Out, FILO).栈只有一个出口,允许新增元素(只能在栈顶上增加).移出元素(只能移出栈顶 ...

  6. 网站压力测试之ApacheBench

    ApacheBench是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求.使用yum安装apache,ab工具在/us ...

  7. 13. Roman to Integer

    Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...

  8. matlab实现协同过滤之pdist、squareform

    实现协同过滤算法的第一步是:计算用户或项目之间的相似度.接下来介绍pdist和squareform 用法: D = pdist(X) D = pdist(X,distance)   D = pdist ...

  9. django user模块改写

    示例一:继承AbstractBaseUser,AbstractBaseUser只有三个字段password,last_login,is_active,以及需要复习的两个方法 def get_full_ ...

  10. Amazon Hiring Campus 2013 - Final 6

    Let's assume that there is a simple market for beans. Every day there is a published bean price in t ...