`
白色熊猫
  • 浏览: 17439 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

基于API 的spring aop(自动代理)

 
阅读更多
BeanNameAutoProxyCreator通过匹配bean的id值来决定自动代理那些target。自动代理可以不用为每个目标对象制定advice。配置文件如下。
<?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:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd ">
	<bean id="hello" class="cn.com.gan.spring.aop.ImpHello"></bean>
	<bean id="loggera" class="cn.com.gan.spring.aop.LoggerAfter"></bean>
	<bean id="loggerb" class="cn.com.gan.spring.aop.LoggerBefore"></bean>
<bean id="logger" class="cn.com.gan.spring.aop.loggerAdvisor"></bean>
<bean id="advisor"
		class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
		<property name="mappedName" value="s*n"></property>
		<property name="advice">
			<ref local="logger" />
		</property>
	</bean>
	<bean id="regadvisor"
		class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
		<property name="pattern" value=".*Again"></property>
		<property name="advice" ref="logger"></property>
	</bean>

<bean id="proxyhello"     class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames">
			<value>hello</value>
		</property>
		<property name="interceptorNames">
			<list>
			advisor	
			</list>
		</property>
	</bean>
</beans>

或者DefaultAdvisorAutoProxyCreator不清楚根据什么代理或者是全部代理
<?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:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd ">
	<bean id="hello" class="cn.com.gan.spring.aop.ImpHello"></bean>
	<bean id="loggera" class="cn.com.gan.spring.aop.LoggerAfter"></bean>
	<bean id="loggerb" class="cn.com.gan.spring.aop.LoggerBefore"></bean>
<bean id="logger" class="cn.com.gan.spring.aop.loggerAdvisor"></bean>
<bean id="advisor"
		class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
		<property name="mappedName" value="s*n"></property>
		<property name="advice">
			<ref local="logger" />
		</property>
	</bean>
	<bean id="regadvisor"
		class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
		<property name="pattern" value=".*Again"></property>
		<property name="advice" ref="logger"></property>
	</bean>
<bean id="proxyhello"     class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
			</bean>
</beans>
分享到:
评论

相关推荐

    springAOP配置动态代理实现

    1. **JDK动态代理**:Spring在没有CGLIB库的情况下,会使用Java的反射API创建动态代理。动态代理类会实现目标接口,并在调用接口方法时插入通知。因此,使用JDK动态代理的目标类必须实现至少一个接口。 2. **CGLIB...

    spring aop API示例

    对于基于注解的配置,可以使用`@EnableAspectJAutoProxy`开启自动代理。 例如,以下是一个简单的切面类示例: ```java @Aspect @Component public class LoggingAspect { @Before("execution(* ...

    spring aop所需jar包

    - 自动代理:Spring会根据配置自动生成代理对象,透明地处理切面逻辑。 7. **最佳实践**: - 尽量减少切面的粒度,避免过多的切面导致系统复杂性增加。 - 切面应该具有高度的重用性和独立性,避免与具体业务逻辑...

    mybatis 拦截器 + spring aop切面 + spring事务+ 反射工具类

    在IT行业中,MyBatis、Spring AOP、Spring事务管理和反射工具类是常见的技术栈,它们在构建高效、灵活的企业级应用中起着至关重要的作用。以下是对这些知识点的详细阐述: 1. MyBatis拦截器(MyBatis Interceptor)...

    spring aop jar

    使用Spring AOP,我们可以定义切面,通过注解或XML配置来指定切点和通知,然后Spring会自动处理代理的创建和通知的执行。这样,我们就可以在不改动业务代码的情况下,轻松实现横切关注点的管理和增强。 总的来说,...

    spring aop_aopalliance.jar_aspectjweaver.jar

    2. 配置Spring容器,启用AspectJ自动代理,例如在XML配置中添加`&lt;aop:aspectj-autoproxy /&gt;`。 3. 定义切面,包括切入点表达式和通知,可以使用AspectJ的注解或者XML配置。 4. 将切面类加入到Spring容器中。 总的来...

    spring AOP代理机制.docx

    2. **动态代理**:为了解决静态代理的局限性,Spring提供了基于Java动态代理(JDK Proxy)和CGLIB的动态代理机制。在动态代理中,我们不再需要手动创建代理类,而是通过实现`InvocationHandler`接口创建一个代理对象...

    Spring 基于基于XML配置方式实现AOP

    前者使用Spring AOP的原生API,后者则使用AspectJ的自动代理机制。 2. **定义切面**: 使用`&lt;aop:aspect&gt;`元素创建一个切面。在其中,你可以定义ID、引用对应的bean以及包含通知的方法。 ```xml &lt;aop:aspect id...

    day39 07-Spring的AOP:自动代理

    在压缩包`spring3_day02_aop`中,可能包含了Spring AOP的示例代码,包括切面类、配置文件以及运行示例,你可以通过学习这些代码加深对Spring AOP自动代理的理解。通过实际操作,你会发现Spring AOP使得编写和管理切...

    解释Spring中的Aop代理

    当我们声明一个Bean为切面并配置通知时,Spring容器会在需要的时候自动创建AOP代理。当通过代理调用目标方法时,Spring会先执行通知,然后转发到实际的目标方法。这个过程称为拦截器链,每个通知相当于一个拦截器,...

    spring aop xml实现

    Spring会自动创建相应的代理对象并应用切面。 通过以上步骤,我们完成了在XML中配置Spring AOP的基本流程。需要注意的是,尽管XML配置较为繁琐,但它提供了更细粒度的控制和可读性。随着Spring的发展,基于注解的...

    [#0x0042] Spring AOP学习(二):动态代理

    如果目标对象没有实现接口,Spring会自动切换到CGLIB代理,这是一种基于字节码生成技术的代理方式,可以代理没有接口的类。 总的来说,Spring AOP的动态代理机制为我们提供了强大的功能,使得我们可以优雅地实现横...

    spring_aop.zip

    "spring-aop.jar"包含了Spring AOP框架的核心类和接口,如org.springframework.aop.*包下的内容,它提供了基于代理的AOP实现。而"spring-aspects.jar"则包含了一些预定义的AspectJ切面,比如事务管理方面的支持。 ...

    20190606_SpringAOP编程实现_田超凡.docx

    `aop:aspectj-autoproxy`是一个Spring配置元素,用于启用基于AspectJ的自动代理。如果`proxy-target-class`属性设置为`true`,Spring将使用CGLIB代理;如果为`false`,则使用JDK动态代理(前提是目标对象实现了至少...

    Spring AOP的静态代理和动态代理,转移到调用处理器一个集中的方法中处理.docx

    【Spring AOP的静态代理和动态代理】 在软件开发中,代理模式是一种常见的设计模式,它允许我们在不修改原有对象的基础上,对对象的行为进行增强。代理模式的核心思想是通过代理对象来控制对原始对象(也称为委托...

    第二章:Spring AOP 基础1

    - `&lt;aop:aspectj-autoproxy&gt;`元素用于在XML配置中启用@AspectJ切面的自动代理。 3. **编程方式创建代理**: - 使用`org.springframework.aop.aspectj.annotation.AspectJProxyFactory`可以手动创建基于@AspectJ的...

    Spring 代理 Aop 实现原理讲解.docx

    在Spring框架中,AOP(面向切面编程)是一种重要的编程模型,它允许开发者定义“切面”,这些切面可以包含业务逻辑的某个部分,例如日志、事务管理等,然后在运行时自动插入到合适的位置,无需在每个方法中重复编写...

    spring aop实现

    Spring AOP通过代理模式来实现这一目标,提供了声明式和编程式两种方式。 二、Spring AOP的实现方式 1. 声明式AOP:基于XML配置或注解的方式定义切面,更简洁易用。 2. 编程式AOP:使用Spring的API直接创建和管理...

Global site tag (gtag.js) - Google Analytics