Spring, 基于自动代理实现aop

原创 2015年07月07日 15:57:27

与自己写代理实现aop(http://blog.csdn.net/u012994584/article/details/46790267)不同的是:
ApplicationContext.xml:

<?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">

<bean id="studentDaoImpl" class="net.wchdai.spring.dao.impl.StudentDAOImpl"/>

<bean id="studentProxy" class="net.wchdai.spring.proxy.MyStudentProxy"/>
<!-- 
<bean id="studentDaoPointCut" class="org.springframework.aop.support.JdkRegexpMethodPointcut">
    <property name="pattern" value=".*Student"></property>
</bean>
<bean id="studentDaoProxyFactory" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="target" ref="studentDaoImpl"></property>
    <property name="interceptorNames" value="studentDaoAdvisor"></property>
    <property name="proxyInterfaces" value="net.wchdai.spring.dao.StudentDAO"></property>
</bean> -->

<bean id="studentDaoAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
    <property name="advice" ref="studentProxy"></property>
    <property name="pattern" value=".*Student"></property>
</bean>

<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"></bean>

</beans>

单元测试:

package net.wchdai.spring.test;

import net.wchdai.spring.dao.StudentDAO;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import junit.framework.TestCase;

public class StudentAOPTest extends TestCase{
    public void testAOPProxy(){
        ApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml");
//      StudentDAO sdao=(StudentDAO)ctx.getBean("studentDaoProxyFactory");
        StudentDAO sdao=(StudentDAO)ctx.getBean("studentDaoImpl");
        sdao.saveStudent();
    }
}

执行结果:

before
StudentDAOImpl save student
afterReturning

自动代理优点:减少了代码,少写了PointCut & ProxyFactory

通过SpringAOP+注解实现自动代理

最近在做一个数据对接项目,通过Hessian与其他企业对接数据。但是公司电脑不能上网只能通过代理上网。如果每个方法都写代理的代码太繁琐,而且项目发布到服务器上的时候服务器是可以上网的。即便通过配置文件...
  • jaune161
  • jaune161
  • 2015年03月11日 14:41
  • 4904

Spring Mvc那点事---(30)Spring Mvc传统AOP自动代理实现

Spring 传统AOP可以实现自动代理,不需要专门指定代理,可以在类生成的时候自动代理,有两种方式实现自动代理,基于Bean名称的自动代理 BeanNameAutoProxyCreator和基于...
  • zx13525079024
  • zx13525079024
  • 2016年07月14日 21:48
  • 906

Spring的AOP自动代理(含AspectJ的AOP开发)

1. 自动代理:  上面这两种代理的方式不好,需要为每一个类配置一个独立的ProxyFactoryBean.(如果需要代理的类特别的多,每个类都需要创建一个代理的类.)  根据切面Advi...
  • SUNFC_nbu
  • SUNFC_nbu
  • 2016年03月22日 21:22
  • 1425

Spring AOP 自动代理执行增强

基本类package com.advice;/** * @author Duoduo * @version 1.0 * @date 2017/4/25 23:41 */ public clas...
  • qq_26115733
  • qq_26115733
  • 2017年04月26日 00:23
  • 218

【框架】[Spring]AOP拦截-三种方式实现自动代理

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自【大学之旅_谙忆的博客】 这里的自动代理,我讲的是自动代理bean对象,其实就是在xml中让我们不用配置代理工...
  • qq_26525215
  • qq_26525215
  • 2016年09月03日 00:15
  • 3979

Spring进阶之路(9)-Spring AOP面向切面编程概念以及通过JDK代理生成AOP代理对象

在软件开发中,分布于应用中多处的功能被称为横切关注点,,通常情况下,这些横切关注点从概念上是与应用的业务逻辑相分离的。将这些横切关注点与我们的业务逻辑相分离是面向切面编程AOP所要解决的事情。 ...
  • wangyang1354
  • wangyang1354
  • 2016年03月14日 22:39
  • 2020

JAVA动态代理 和 Spring AOP 4种通知的简单实现

转自 https://my.oschina.net/u/1444899/blog/217739 摘要: JAVA动态代理 和 Spring AOP 4种通知的简单实现 学习Spring AOP 之...
  • u012799221
  • u012799221
  • 2016年12月23日 14:24
  • 822

spring实现AOP的两种方式以及实现动态代理方式

AOP: 方式一:Annatation 注解方式 1、spring依赖库  * SPRING_HOME/dist/spring.jar  * SPRING_HOME/lib/jakar...
  • shangzhiliang_2008
  • shangzhiliang_2008
  • 2015年08月30日 11:30
  • 2358

Spring AOP动态代理原理与实现方式

AOP:面向切面、面向方面、面向接口是一种横切技术 横切技术运用: 1.事务管理: (1)数据库事务:(2)编程事务(3)声明事物:Spring AOP-->声明事物    2.日志处理: 3...
  • lirui0822
  • lirui0822
  • 2013年01月30日 15:33
  • 57387

spring aop自动代理注解配置失效问题及原理机制整理总结

spring aop自动代理注解配置失效问题整理总结
  • gufachongyang02
  • gufachongyang02
  • 2016年02月05日 16:13
  • 4173
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring, 基于自动代理实现aop
举报原因:
原因补充:

(最多只允许输入30个字)