用的是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 把网络电源给切了,结果到现在才发上来.估计大家都过国庆去了,哎!)