`

spring 中的BeanNameAutoProxyCreator (转)

阅读更多
spring 中的BeanNameAutoProxyCreator 

2012-01-07 20:38:41|  分类: spring |字号 订阅
BeanNameAutoProxyCreator 只需指定bean的名称,以及被通知bean的名称,指定名称时可以使用通配符。

自动代理它们。

例子:

package com.itcst.info.autoproxy;

public class AutoBean {
public void foo()
{
System.out.println("hello xiaoming");
}
}



----拦截器advisce

package com.itcst.info.pointcut;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

public class SimpleAdvice implements MethodInterceptor {

@Override
public Object invoke(MethodInvocation invokes) throws Throwable {
  // TODO Auto-generated method stub
  System.out.println("提前了");
  return invokes.proceed();
}

}



3.配置文件

<?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-2.5.xsd"
default-autowire="no" default-lazy-init="false">
 
   <bean id="proxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
   <property name="beanNames">
   <list>
   <value>foo*</value>---表达式foo开头
   <value>barBean</value>
   </list>
   </property>
  
   <property name="interceptorNames">
   <list><value>advice</value></list>
   </property>
   </bean>
  
   <bean id="foobean" class="com.itcst.info.autoproxy.AutoBean"></bean>
   <bean id="barbean" class="com.itcst.info.autoproxy.AutoBean"></bean>
   <bean id="advice" class="com.itcst.info.pointcut.SimpleAdvice"></bean>
  
  </beans>



客户端

package com.itcst.info.autoproxy;

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

public class AutoproxyTest {

/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
ApplicationContext ctx=new ClassPathXmlApplicationContext("conf/spring/beans.xml");
AutoBean bean1=(AutoBean)ctx.getBean("foobean");
AutoBean bean2=(AutoBean)ctx.getBean("barbean");
bean1.foo();
bean2.foo();
}

}
分享到:
评论

相关推荐

    AOP usage -- BeanNameAutoProxyCreator usage

    `BeanNameAutoProxyCreator`是Spring AOP实现中的一种代理创建器,它根据bean的名称来决定是否对bean进行代理处理。在本篇文章中,我们将深入探讨`BeanNameAutoProxyCreator`的使用方法及其背后的原理。 首先,`...

    Spring-Reference_zh_CN(Spring中文参考手册)

    12.2.2. 在Spring的application context中创建 SessionFactory 12.2.3. HibernateTemplate 12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. ...

    Spring实现自动代理Demo

    在Spring的XML配置文件中,我们需要声明一个`BeanNameAutoProxyCreator` bean,并设置其属性。例如: ```xml &lt;bean id="proxyCreator" class="org.springframework.aop.framework.autoproxy....

    spring 事务(6中配置完全降解)

    Spring 事务管理是Java开发中不可或缺的一部分,尤其是在企业级应用中。它提供了强大的事务控制能力,确保了数据的一致性和完整性。本篇文章将详细解析Spring中的六种事务配置方法,帮助开发者深入理解并掌握Spring...

    开源框架 Spring Gossip

    BeanNameAutoProxyCreator DefaultAdvisorAutoProxyCreator &lt;br&gt; 持久层 来看看 Spring 的 IoC 容器与 AOP 框架如何应用于持久层,包括了资料库、交易等相关议题。 资料库存取 Spring ...

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能...附录B 在Spring中开发Web Service

    Spring在Transaction事务传播行为种类

    ### Spring中的Transaction事务传播行为种类详解 #### 一、引言 在开发基于Spring框架的应用程序时,事务管理是确保数据一致性的重要手段之一。Spring框架提供了丰富的事务管理功能,其中包括了事务传播行为...

    spring 事务代理配置

    本文将深入探讨如何在Spring框架中使用`TransactionProxyFactoryBean`来实现声明式事务代理配置。 #### 声明式事务管理概述 声明式事务管理通过在配置文件或注解中定义事务边界,而不是在业务代码中显式地管理事务...

    Spring_Hibernate使用TransactionInterceptor声明式事务配置.doc

    在这篇文章中,我们将探讨使用Spring_Hibernate框架实现声明式事务配置的方法,具体来说,就是使用TransactionInterceptor来管理事务。在Spring框架中,事务管理器是核心组件之一,它负责管理事务的生命周期,包括...

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能...附录B 在Spring中开发Web Service

    spring代理详解.txt

    在Spring框架中,代理机制主要用于实现AOP(面向切面编程)功能,通过动态创建代理对象来拦截目标方法调用,从而实现如事务管理、日志记录、性能监控等横切关注点。 ### 1. ProxyFactoryBean `ProxyFactoryBean`是...

    spring1.2申明式事务.txt

    根据提供的文件信息,本文将详细解析Spring 1.2中声明式事务管理的相关知识点,包括其配置方式、工作原理以及如何在实际应用中实施。 ### Spring 1.2声明式事务简介 Spring框架中的声明式事务管理是通过AOP(面向...

    Spring+Ibatis 访问多个数据源

    下面将详细介绍如何在Spring中配置和使用多个数据源,以及结合Ibatis进行数据访问。 首先,我们需要在`jdbc.properties`文件中配置每个数据源的相关参数,如驱动类名、URL、用户名和密码。在这个例子中,有两个数据...

    Spring + Hibernate + Struts 事务配置小例子(带提示框等小技巧)

    class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"&gt; &lt;!-- 指定对满足哪些bean name的bean自动生成业务代理 --&gt; &lt;!-- 下面是所有需要自动创建事务代理的bean--&gt; ...

    Spring安全系统:Acegi Security--星月夜

    前者用于保护Spring容器中的业务对象,通过使用ProxyFactoryBean或BeanNameAutoProxyCreator,可以实现对Bean的代理和安全管理;后者则通过过滤器保护HTTP资源,开发者只需在web.xml中添加相应的Filter配置,即可...

    spring拦截器的简单例子.docx

    &lt;bean id="autoproxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"&gt; ``` 最后,`autoproxy` Bean 是一个自动代理创建器,它会为 `purviewimpl` 这个 Bean 创建一个代理...

    SPRING API 2.0.CHM

    BeanNameAutoProxyCreator BeanNameAware BeanNameUrlHandlerMapping BeanNameViewResolver BeanNotOfRequiredTypeException BeanPostProcessor BeanPropertyBindingResult BeanPropertySqlParameterSource ...

    Spring声明式事务和@Aspect的拦截顺序问题的解决

    Spring 框架中,声明式事务和 @Aspect 都可以用于实现Aspect-Oriented Programming(面向方面编程),但是它们的拦截顺序问题往往会导致很多问题。本文将详细介绍 Spring 声明式事务和 @Aspect 的拦截顺序问题的解决...

Global site tag (gtag.js) - Google Analytics