springMVC使用aop的问题,实现用户操作监控

小可同学 2013-03-06 10:47:05
目前需求是进行用户的action操作监控,用户名、URL、等信息记录下。
然后还有每个action中的service被调用的次数也要记录,(这点最不好弄)。
action我使用beanName进行监控,代码:

<bean id="aspect" name="aspect" class="com.cssnb.admin.aop.main.UserActive"></bean>
<bean name="loggingAutoProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>*Action</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>aspect</value>
</list>
</property>
</bean>

service的我这么配置的,但不能进入方法,代码:

<aop:config>
<aop:aspect id="serviceAspect" ref="serviceMonitor">
<aop:pointcut id="service_cut" expression="execution(* com.cssnb..service.*.*(..))" />
<aop:before pointcut-ref="service_cut" method="doBefore"/>
<aop:after pointcut-ref="service_cut" method="doAfter"/>
<aop:around pointcut-ref="service_cut" method="doAround"/>
</aop:aspect>
</aop:config>
<bean name="serviceMonitor" class="com.cssnb.admin.aop.main.UserMonitor"></bean>

之前的项目使用的是ssi,是可以监听到service,但不能用下面的方法监听action,
反倒这个项目用springMVC,service不能监听,action却可以了。
想知道问题:
一:

<property name="beanNames">
<list>
<value>*Action</value>
</list>
</property>

action的beanNames有没有其他方法配置,*Action是我自己蒙出来的!
二:(重点问题)service在springMVC里怎么进行监听的?
...全文
275 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
JAVA追随者 2013-06-18
  • 打赏
  • 举报
回复
sammyke,能否加个QQ聊聊,最近搞这个头都憋大了也没弄出来...QQ:413310600,请加一下...
小可同学 2013-03-10
  • 打赏
  • 举报
回复
引用 1 楼 lvzg_005 的回复:
第一个问题:spring中的BeanNameAutoProxyCreator实现了自动代理,属性beanNames是为了方便切面一系列有共同命名规范的类。支持ant-stype表达式。当遇到符合要求的beanName就借助拦截器来执行相依的操作。个人觉得*Action可以作为Action类的后缀,从而实现切面action,或者使用*Controller,主要是要求这类ac……
第一个问题:我又看了下代码,我还真疏忽了,既然是beanNames,肯定是类名了,我的命名规则就是Action和Controller,这个算是不是问题了。 第二个问题:expression="execution(* com.cssnb..service.*.*(..))",我这个写法在另外一个项目是可以用的,但是这个项目不知道何原因,就是进不去方法。但改成action就可以了!很纳闷啊~~
lvzg_005 2013-03-07
  • 打赏
  • 举报
回复
第一个问题:spring中的BeanNameAutoProxyCreator实现了自动代理,属性beanNames是为了方便切面一系列有共同命名规范的类。支持ant-stype表达式。当遇到符合要求的beanName就借助拦截器来执行相依的操作。个人觉得*Action可以作为Action类的后缀,从而实现切面action,或者使用*Controller,主要是要求这类action或controller按照一定的命名规范来书写。 第二个问题:spring MVC并没有要求一定要使用service层,只是我们在设计系统时,采用了分层的设计思路而已。spring mvc给我们提供了从前台请求到后台Controller处理一种解决方案。至于切面service是可以的。我做了个试验,可以成功切自己的service方式。 给你提供几个思路来检查配置或代码: 1.确保aop配置文件被加载 2.expression中可以先写一个具体的类,具体的方法,测试有没有到达切面方法 3.如果上述可以做到,把表达式一步一步扩展到通配符格式。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧