用的是ssh架构~
模块要实现的功能是:跟踪用户的操作信息.比如,用户当前正在创建新的文章等等.然后现在用Spring的AOP实现.
用的是DefaultAdvisorAutoProxyCreator 自动代理,项目中的action很多,项目也比较大,所以思前想后,就选这个.
然后结合了RegexpMethodPointcutAdvisor,用拦截方法的办法!(因为是初学,所以可能很多地方表达不正确)
applicationContext.xml里头的这部分配置:
xml 代码
- <bean id="abeforeAdvisor" class="com.csc.callcenter.util.ActionBeforeAdvisor">bean>
- <bean id="aafterAdvisor" class="com.csc.callcenter.util.ActionAfterAdvisor">bean>
- <bean id="autoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
- bean>
- <bean id="beadvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
- <property name="pattern">
- <value>.*doAction.*value>
- property>
- <property name="advice">
- <ref bean="abeforeAdvisor"/>
- property>
- bean>
- <bean id="afadvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
- <property name="pattern">
- <value>.*doAction.*value>
- property>
- <property name="advice">
- <ref bean="aafterAdvisor"/>
- property>
- bean>
- <bean id="onlineAction" class="com.csc.callcenter.web.onlineinfo.OnlineAction">bean>
- <bean id="userInfoAction" class="com.csc.callcenter.web.onlineinfo.UserInfoAction">bean>
但是这样,有一个问题,每个aciton 都要在这里配置好,系统初始化的时候,需要getBean("xxxx"),来获得配置里头的bean的信息.我们项目经理说,这样的方法不太好,偶也想寻求更好的办法!不知道有没有更好的解决方法?
(本来这文字下班时候就敲好了,等偶要提交的时候,老PA 把网络电源给切了,结果到现在才发上来.估计大家都过国庆去了,哎!)
分享到:
相关推荐
`DefaultAdvisorAutoProxyCreator`是Spring AOP中用于实现自动代理创建的核心类,它根据配置的顾问来决定哪些bean需要被代理以及如何代理。下面我们将深入探讨`DefaultAdvisorAutoProxyCreator`的工作原理及其在实际...
`DefaultAdvisorAutoProxyCreator` 是 Spring 自动代理实现的核心类,它负责根据Advisor创建代理对象。 在提供的配置中,我们看到以下几个关键组件: 1. **Bean `person`** - 这是一个名为 `PersonCon` 的类的实例...
在Day01_AutoAOP的学习资料中,你可能将深入理解Spring AOP的原理,实践自动代理的配置,并通过示例代码体验如何使用AOP进行日志记录、事务管理和权限控制等功能。这将有助于提升你在JavaEE开发中的能力,使你的代码...
Spring AOP源码01:Jdk动态代理底层源码 Spring AOP源码02:ProxyFactory Spring AOP源码03:JdkDynamicAopProxy Spring AOP源码04:MethodInvocation 拦截器调用 Spring AOP源码05:DefaultAdvisorAutoProxyCreator...
`DefaultAdvisorAutoProxyCreator`是Spring中最常用的自动代理创建者,它会自动将所有符合条件的advisor应用到所有的bean上。与`BeanNameAutoProxyCreator`不同,它不依赖于bean名称,而是依赖于advisor的pointcut...
Spring的`DefaultAdvisorAutoProxyCreator`会根据配置的Advisor自动创建代理,而`Advised`接口提供了对代理设置和获取各种配置信息的能力,如拦截器链。 4. **底层实现原理**: - **JDK代理**:JDK动态代理使用...
2. 基于Advisor匹配机制的自动代理创建器:DefaultAdvisorAutoProxyCreator是这种类型的实现类,它会对容器中的所有Advisor进行扫描,自动将这些切面应用到匹配的Bean中。 3. 基于Bean中AspectJ注解的自动代理生成...
当调用代理方法时,代理会拦截调用并自动开启、提交或回滚事务,从而实现事务的管理。 #### 配置步骤 1. **定义数据源**:首先,需要在Spring配置文件中定义数据源。数据源是所有数据库交互的基础,这里使用`...
- Spring AOP提供了`DefaultAdvisorAutoProxyCreator`,它可以自动为匹配的Bean创建JDK代理。 - 切面(Aspect)是Spring AOP的核心,它封装了通知(Advice),通知定义了切面的逻辑。例如,我们可以创建一个`...
- **DefaultAdvisorAutoProxyCreator**:继承自AbstractAutoProxyCreator,是Spring中默认的自动代理创建器。 4. AOP代理对象的来源和类型 - **TargetSource(目标源)**:被代理对象的来源。 - **...
**特点**:这种方式更为自动化,适用于大量对象的自动代理配置,可以减少XML配置的工作量。 **配置示例**: ```xml <!-- 目标对象Bean --> <!-- 通知对象Advice --> <!-- 自动代理对象 --> ...
- **DefaultAdvisorAutoProxyCreator**:自动代理创建器,它会扫描所有的Advisor并为匹配的bean创建代理。 - **AbstractAutoProxyCreator**:自动代理创建器的抽象基类,提供了创建代理的基本逻辑。 - **...
拦截顺序问题的原因是由于 Spring 框架中有多种自动代理方式的存在。Spring 框架中有三种自动代理方式: 1. 通过 Bean 的名称自动创建代理,实现类 BeanNameAutoProxyCreator 2. 根据 Bean 中的 AspectJ 注解自动...
`DefaultAdvisorAutoProxyCreator`是Spring AOP中用于自动创建代理的组件,它会寻找所有`Advisor`(包括事务增强`Advisor`),并将它们应用到相关的bean上。这样,我们可以通过定义`Pointcut`来决定哪些方法需要...
在spring-aop.jar中,`org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator`类负责自动创建代理并织入切面。 三、Spring AOP的使用 在实际应用中,我们可以利用Spring AOP进行日志记录、...
6. **源码分析**: 深入研究Spring AOP的源码,可以帮助我们理解其内部工作原理,例如`DefaultAdvisorAutoProxyCreator`是如何创建代理的,`Advised`接口是如何控制代理行为的,以及`AspectJExpressionPointcut`是...
你需要配置`AnnotationMethodHandlerAdapter`和`DefaultAdvisorAutoProxyCreator`,这样Spring AOP才能代理带有Shiro注解的方法。 2. **AOP代理问题**:如果你使用的是Spring,Shiro注解需要通过AOP代理来实现。...
在bean初始化完成后,如果bean定义中指定了`@Scope`、`@Aspect`等AOP相关注解,`ApplicationContext`会通过`DefaultAdvisorAutoProxyCreator`创建代理对象,使得切面逻辑可以在目标方法调用前后执行。 五、事件发布...
- `DefaultAdvisorAutoProxyCreator`:自动为符合AOP条件的Bean创建代理对象。 2. **BeanFactoryPostProcessor**:此接口允许在所有Bean实例化之前修改Bean的配置元数据。Spring提供了以下实现: - `...