`
lindongxiao
  • 浏览: 47738 次
  • 性别: Icon_minigender_1
  • 来自: 泉州
社区版块
存档分类
最新评论

spring aop 笔记2

    博客分类:
  • aop
阅读更多
spring aop的自动代理
BeanNameAutoProxyCreator为名字匹配字符串或者通配符的bean自动创建AOP代理。
java 代码
 
  1. public class AutoBean {  
  2.       
  3.     public void foo() {  
  4.         System.out.println("foo()");  
  5.     }  
  6. }  
通知
java 代码
 
  1. package aop;  
  2.   
  3. import java.lang.reflect.Method;  
  4.   
  5. import org.springframework.aop.MethodBeforeAdvice;  
  6.   
  7. public class SimpleBeforeAdvice implements MethodBeforeAdvice{  
  8.   
  9.     public void before(Method method, Object[] arg1, Object arg2) throws Throwable {  
  10.   
  11.         System.out.println("Bofore method:"+ method );  
  12.     }  
  13.   
  14. }  
配制
java 代码
 
  1. "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  2.    <beans>  </beans>
  3.          
  4.                      class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
  5.                       
  6.                            <list>  </list>
  7.                            <value>foo*</value>  
  8.                           <value>barBean</value>  
  9.                             
  10.                                
  11.                        
  12.                            <list>  </list>
  13.                             <value>advice</value>  
  14.                              
  15.                               
  16.                               
  17.                  
  18.                   
  19.                 
  20.   
  21.             

test
java 代码
 
  1. package aop;  
  2.   
  3. import org.springframework.aop.support.AopUtils;  
  4. import org.springframework.context.ApplicationContext;  
  5. import org.springframework.context.support.FileSystemXmlApplicationContext;  
  6.   
  7. public class IntroductionConfigExample {  
  8.   
  9.     public static void main(String[] args) {  
  10.         ApplicationContext ctx = new FileSystemXmlApplicationContext(  
  11.                 "./src/beans.xml");  
  12.           
  13.         AutoBean autoBean = (AutoBean)ctx.getBean("fooBean");  
  14.         AutoBean autoBean1 = (AutoBean)ctx.getBean("barBean");  
  15. //        OtherBean otherBean = (OtherBean)ctx.getBean("otherBean");  
  16.           
  17.         autoBean.foo();  
  18.         System.out.println(AopUtils.isAopProxy(autoBean));  
  19.           
  20. //        otherBean.foo();  
  21. //        System.out.println(AopUtils.isAopProxy(otherBean));  
  22.   
  23.          
  24.     }  
  25. }             
  26.          

DefaultAdvisorAutoProxyCreator

一个更加通用而且强大得多的自动代理创建器是DefaultAdvisorAutoProxyCreator。它自动应用当前上下文中适当的advisor,无需在自动代理advisor的bean定义中包括bean的名字。 比起BeanNameAutoProxyCreator,它提供了同样关于一致性配置的优点而避免了前者的重复性。

可以向每个业务对象应用任意数量的advisor。对于一个业务对象,如果没有任何advisor中的切入点匹配它的任何方法,这个对象将不会被代理。

java 代码
 
  1. package aop2;  
  2.   
  3. public class AutoBean {  
  4.       
  5.     public void foo() {  
  6.         System.out.println("foo()");  
  7.     }  
  8. }  
java 代码
 
  1. package aop2;  
  2. public class OtherBean {  
  3.       
  4.     public void foo() {  
  5.         System.out.println("foo()");  
  6.     }  
  7. }  
java 代码
 
  1. package aop2;  
  2.   
  3. import java.lang.reflect.Method;  
  4.   
  5. import org.springframework.aop.MethodBeforeAdvice;  
  6.   
  7. public class SimpleBeforeAdvice implements MethodBeforeAdvice{  
  8.   
  9.     public void before(Method method, Object[] arg1, Object arg2) throws Throwable {  
  10.   
  11.         System.out.println("Bofore method:"+ method );  
  12.     }  
  13.   
  14. }  
定义pointcut
java 代码
 
  1. package aop2;  
  2.   
  3. import org.springframework.aop.ClassFilter;  
  4. import org.springframework.aop.MethodMatcher;  
  5. import org.springframework.aop.Pointcut;  
  6.       
  7. public class MyPointcut implements Pointcut {  
  8.       
  9.     public ClassFilter getClassFilter() {  
  10.         return new ClassFilter() {  
  11.             
  12.             public boolean matches(Class cls) {  
  13.                 return (cls == AutoBean.class);  //只代理autobean
  14.             }  
  15.         };  
  16.     }  
  17.       
  18.     public MethodMatcher getMethodMatcher() {  
  19.         return MethodMatcher.TRUE;  
  20.     }  
  21. }  
java 代码
 
  1. package aop2;  
  2.   
  3. import org.springframework.aop.support.AopUtils;  
  4. import org.springframework.context.ApplicationContext;  
  5. import org.springframework.context.support.FileSystemXmlApplicationContext;  
  6.   
  7. public class DefaultCreatorExample {  
  8.     public static void main(String[] args) {  
  9.         ApplicationContext ctx = new FileSystemXmlApplicationContext(  
  10.         "./src/beans1.xml");  
  11.           
  12.         AutoBean autoBean = (AutoBean)ctx.getBean("autoBean");  
  13.         OtherBean otherBean = (OtherBean)ctx.getBean("otherBean");  
  14.           
  15.         autoBean.foo();  
  16.         System.out.println(AopUtils.isAopProxy(autoBean));  
  17.           
  18.         otherBean.foo();  
  19.         System.out.println(AopUtils.isAopProxy(otherBean));  
  20.     }  
  21.   
  22. }  
配制

<beans><bean id="proxyCreator"><bean id="autoBean" class="aop2.AutoBean"><bean id="otherBean" class="aop2.OtherBean"><bean id="advisor"> <property name="pointcut">
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   
    <bean id="proxyCreator">
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
   
    <bean id="autoBean" class="aop2.AutoBean">
    <bean id="otherBean" class="aop2.OtherBean">
   
    <bean id="advisor">
          class="org.springframework.aop.support.DefaultPointcutAdvisor">
           <property name="pointcut">
               <bean class="aop2.MyPointcut">
           </bean>
           <property name="advice">
               <bean class="aop2.SimpleBeforeAdvice">
           </bean>
    </property>
</property>

               <bean class="aop2.MyPointcut">
           </bean>
           <property name="advice">
               <bean class="aop2.SimpleBeforeAdvice">
           </bean>
    </property>
</bean> </bean></bean></bean></beans></property> </bean></bean></bean></bean></beans>
分享到:
评论
2 楼 lindongxiao 2007-07-16  
DefaultAdvisorAutoProxyCreator配制
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   
    <bean id="proxyCreator"
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
   
    <bean id="autoBean" class="aop2.AutoBean"/>
    <bean id="otherBean" class="aop2.OtherBean"/>
   
    <bean id="advisor"
          class="org.springframework.aop.support.DefaultPointcutAdvisor">
           <property name="pointcut">
               <bean class="aop2.MyPointcut"/>
           </property>
           <property name="advice">
               <bean class="aop2.SimpleBeforeAdvice"/>
           </property>
    </bean>
</beans>
1 楼 lindongxiao 2007-07-16  
BeanNameAutoProxyCreators配制
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="proxyCreator"          
      class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <property name="beanNames">
             <list>
                <value>foo*</value>
                <value>barBean</value>
            </list>
            </property>   
        <property name="interceptorNames">
            <list>
                <value>advice</value>
            </list>
        </property>
    </bean>
   
    <bean id="fooBean" class="aop.AutoBean"/>
    <bean id="barBean" class="aop.AutoBean"/>
   
    <bean id="advice" class="aop.SimpleBeforeAdvice"/>

</beans>

相关推荐

    spring aop 学习笔记

    本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...

    Spring AOP IOC源码笔记.pdf

    本笔记将深入探讨这两个概念以及它们在Spring中的实现。 1. Spring框架简介: Spring作为一个轻量级的开源框架,旨在简化企业级应用的开发。它通过提供IOC容器,实现了对象的创建、管理和依赖注入,减轻了开发者对...

    SpringAop学习笔记以及实现Demo

    **Spring AOP 学习笔记及实现Demo** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP的主要目的...

    spring源码--AOP流程--笔记.docx

    Spring AOP 源码分析笔记 Spring AOP(Aspect-Oriented Programming)是一种编程范式,它允许开发者 modularize cross-cutting concerns,即将横切关注点模块化。AOP 使得开发者可以将一些公共的功能模块化,以便在...

    ssh-aop笔记

    SSH-AOP笔记主要涵盖的是Spring、Struts和Hibernate三大框架集成使用时,如何结合Aspect Oriented Programming(面向切面编程)的理念进行应用增强。在Java企业级开发中,SSH是常用的MVC架构,而AOP则是一种编程范式...

    Spring AOP学习笔记

    NULL 博文链接:https://linres.iteye.com/blog/281221

    Spring Aop 学习笔记

    Spring Aop 学习笔记

    Spring AOP源码笔记

    【Spring AOP源码笔记】 Spring AOP是Spring框架的核心组件之一,它实现了面向切面编程(Aspect-Oriented Programming,简称AOP),允许开发者定义“切面”,这些切面可以封装横切关注点,如日志记录、事务管理等。...

    Spring_AOP笔记Spring_AOP笔记

    Spring_AOP,全称为Spring的面向切面编程,是一种编程范式,旨在将关注点分离,使得代码结构更清晰,可维护性更强。在传统的面向对象编程(OOP)中,我们通常会将业务逻辑与系统服务(如日志、事务管理等)混杂在...

    Spring AOP 使用笔记

    本笔记主要探讨了如何在Spring应用中使用AOP来实现横切关注点,如日志、事务管理、性能监控等。 首先,理解AOP的基本概念至关重要。AOP的核心是切面(Aspect),它封装了跨越多个对象的行为或责任。切面由两个主要...

    Spring AOP 复习笔记.rar

    **Spring AOP 知识点详解** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它允许程序员定义“切面”,这些切面可以封装跨越多个对象的行为,比如日志、事务管理等。AOP...

    spring ioc aop mvc boot-学习笔记.docx

    2. **Spring AOP(Aspect Oriented Programming,面向切面编程)**: AOP允许开发者定义"横切关注点",这些关注点与业务逻辑分离,可以处理如日志记录、事务管理、安全检查等通用任务。在Spring中,切面通过`@...

    Spring AOP 用法笔记

    2. **启用AOP代理**:在Spring配置中启用AOP代理,可以使用注解`@EnableAspectJAutoProxy`。 ```java @Configuration @EnableAspectJAutoProxy public class AppConfig { // ... } ``` 3. **切点表达式**:`...

    SpringAOP案例代码笔记

    Spring的AOP开发(XML)Spring的AOP的注解开发 代码案例

    JAVA Spring AOP面向切面编程笔记

    JAVA Spring AOP面向切面编程笔记

    Spring学习笔记+学习源码.zip

    2. **容器(IoC Container)**:Spring容器负责创建对象、管理对象的生命周期以及维护对象间的依赖关系。主要有两种类型的容器:BeanFactory和ApplicationContext。 3. **面向切面编程(Aspect-Oriented ...

    拿捏面试官-Spring AOP IOC源码笔记

    Spring的核心特性是控制反转(IOC)和面向切面编程(AOP)。它提供了一个全面的编程和配置模型,可以用于构建各种类型的Java应用程序,包括Web应用。 1. **Spring介绍** - **侵入式概念**:传统Java EE应用中,...

    Spring学习笔记(精华全记录)

    ### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...

    spring-note spring 读书笔记

    2. **面向切面编程(AOP)**: AOP允许在不修改业务代码的情况下,实现如日志记录、性能监控等横切关注点。`spring_aop.txt`可能涵盖了切面、通知类型、切点表达式和AOP代理的详细知识。 3. **Spring与JDBC的整合**:...

Global site tag (gtag.js) - Google Analytics