ProxyFactory:手工编程实现AOP,编程式 添加advice 和 target 以及proxyInterfaces
ProxyFactoryBean: spring 管理,配置interceptorNames,proxyInterfaces,target
DefaultAdvisorAutoProxyCreator:spring 自动发现PointcutAdvisor,根据PointcutAdvisor的 Pointcut 判断是否进行代理
例子:
xml 配置:
<bean id="loginServiceImpl" class="com.gym.LoginServiceImpl"/>
<bean id="ba1" class="com.gym.BeforeAdvice1"/>
<bean id="dpa1" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="advice" ref="ba1"/>
</bean>
<bean id="af1" class="com.gym.AfterAdvice1"/>
<bean id="dpa2" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="advice" ref="af1"/>
</bean>
<bean id="user" class="com.gym.User" >
<property name="username" value="xinchun.wang"/>
<property name="password" value="123456"/>
</bean>
<bean id="WelcomeAdvice" class="com.gym.WelcomeBeforeAdvice"/>
<bean id="adp3" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="pattern">
<value>com.*login</value> <!-- 业务实现方法名匹配 -->
</property>
<property name="advice">
<ref bean="WelcomeAdvice"/>
</property>
</bean>
<bean id="adp4" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
<property name="mappedNames">
<value>login</value> <!-- 业务实现方法名匹配 -->
</property>
<property name="advice">
<ref bean="WelcomeAdvice"/>
</property>
</bean>
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
test:
public class LoginServiceImplTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"classpath:spring/applicationContext.xml");
LoginService userService = applicationContext.getBean("loginServiceImpl",LoginService.class);
User user = new User();
user.setUsername("xinchun.wang");
user.setPassword("123456");
userService.login(user);
System.out.println(userService.getClass());
}
分享到:
相关推荐
在spring-aop.jar中,`org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator`类负责自动创建代理并织入切面。 三、Spring AOP的使用 在实际应用中,我们可以利用Spring AOP进行日志记录、...
在bean初始化完成后,如果bean定义中指定了`@Scope`、`@Aspect`等AOP相关注解,`ApplicationContext`会通过`DefaultAdvisorAutoProxyCreator`创建代理对象,使得切面逻辑可以在目标方法调用前后执行。 五、事件发布...
- **DefaultAdvisorAutoProxyCreator**:继承自AbstractAutoProxyCreator,是Spring中默认的自动代理创建器。 4. AOP代理对象的来源和类型 - **TargetSource(目标源)**:被代理对象的来源。 - **...
6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.7. 编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1....
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
<bean id="proxy" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" /> <!-- 匹配方法的具体配置 --> <bean id="matchMethodName" class="org.springframework.aop.support....
Spring AOP源码05:DefaultAdvisorAutoProxyCreator Spring期末考压轴题:当Spring AOP遇上循环依赖 git注释源码地址:https://github.com/chaitou/spring-framework-master.git 前言 前面已经学习了ProxyF
- Spring AOP提供了`DefaultAdvisorAutoProxyCreator`,它可以自动为匹配的Bean创建JDK代理。 - 切面(Aspect)是Spring AOP的核心,它封装了通知(Advice),通知定义了切面的逻辑。例如,我们可以创建一个`...
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
`DefaultAdvisorAutoProxyCreator`是Spring AOP中用于实现自动代理创建的核心类,它根据配置的顾问来决定哪些bean需要被代理以及如何代理。下面我们将深入探讨`DefaultAdvisorAutoProxyCreator`的工作原理及其在实际...
- Spring通过`DefaultAdvisorAutoProxyCreator`组件自动创建代理。当它检测到容器中有Advisor或Aspect对象时,会为匹配的bean创建代理。 - `@EnableAspectJAutoProxy`注解可以启用基于AspectJ的自动代理,使Spring...
**Spring AOP 源码解析** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,对应用程序进行功能增强的技术。AOP的主要目标是将关注点...
Spring AOP通过代理模式实现,源码中主要涉及`Advisor`、`Pointcut`、`Aspect`等接口和`ProxyFactoryBean`、`DefaultAdvisorAutoProxyCreator`等类。 4. **Spring MVC** - Spring MVC是Spring提供的Web层解决方案...
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"> <property name="proxyTargetClass" value="true" /> </bean> ...
BeanNameAutoProxyCreator DefaultAdvisorAutoProxyCreator <br> 持久层 来看看 Spring 的 IoC 容器与 AOP 框架如何应用于持久层,包括了资料库、交易等相关议题。 资料库存取 Spring ...
`DefaultAdvisorAutoProxyCreator`是Spring AOP中用于自动创建代理的组件,它会寻找所有`Advisor`(包括事务增强`Advisor`),并将它们应用到相关的bean上。这样,我们可以通过定义`Pointcut`来决定哪些方法需要...
在源码中,`DefaultAdvisorAutoProxyCreator`类是AOP代理的创建者,`MethodBeforeAdvice`、`AfterReturningAdvice`等接口定义了不同类型的前置、后置通知。 在Spring中,还有一套完善的事件发布和监听机制,通过`...
- `DefaultAdvisorAutoProxyCreator`:自动为符合AOP条件的Bean创建代理对象。 2. **BeanFactoryPostProcessor**:此接口允许在所有Bean实例化之前修改Bean的配置元数据。Spring提供了以下实现: - `...