关于 DefaultAdvisorAutoProxyCreator 自动代理
用的是ssh架构~
模块要实现的功能是:跟踪用户的操作信息.比如,用户当前正在创建新的文章等等.然后现在用Spring的AOP实现.
用的是DefaultAdvisorAutoProxyCreator 自动代理,项目中的action很多,项目也比较大,所以思前想后,就选这个.
然后结合了RegexpMethodPointcutAdvisor,用拦截方法的办法!(因为是初学,所以可能很多地方表达不正确)
applicationContext.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 把网络电源给切了,结果到现在才发上来.估计大家都过国庆去了,哎!)
?
?
1 楼 fyting 2007-10-04 action在哪儿被调用?什么地方用了getBean("xxxx"),就搞一个自己的Factory嘛... 2 楼 fengzl 2007-10-04 自动代理更适合用在业务对象上,增强action?这个有什么意义?action很难抽象出一个切面来。
action是直接处理request的,
如果你的service层是个facade,只要控制好接口的粒度,把你的要求放在业务对象上应该没问题 3 楼 kyo100900 2007-10-06 <br/>
<strong>lz726 写道:</strong><br/>
<div class='quote_div'>
<p><span><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><font>,而且调用的时候,也要每次都getBean("xxxx").</font></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p><span><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'/></span></span></span></span></span></span></span></span></span></span></span></span></p>
</div>
<p>?</p>
<p>?</p>
<p><span><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'><span class='tag'>请问你这个必须都getBean("xxxx")是怎么回事?Spring的IoC你没有理解还是另有隐情?</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p><br/>
<br/>
<br/>
<br/>
</p>