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里怎么进行监听的?
...全文
268 3 打赏 收藏 转发到动态 举报
写回复
用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.如果上述可以做到,把表达式一步一步扩展到通配符格式。
项目描述 说明: spring security 全注解式的权限管理 动态配置权限,角色和资源,权限控制到按钮粒度 采用token进行权限校验,禁用session,未登录返回401,权限不足返回403 采用redis存储token及权限信息 内置功能: 用户管理:用户查询、添加用户、修改用户、给用户分配角色 菜单管理:菜单列表、添加菜单、修改菜单、删除菜单、权限配置、菜单图标设置、菜单排序 角色管理:角色查询、添加角色、修改角色、删除角色 代码生成:根据表名生成bean、controller、dao、Mapper.xml、列表页、搜索、分页、新增页、修改页 job集群:创建job、取消job、查询job、下拉搜索spring bean 数据源监控:druid 接口swagger文档 日志查询 邮件管理:发送邮件、搜索邮件 文件管理:上传文件、文件列表、文件删除 公告管理:公告未读提醒、发布公告、查询公告、公告阅读人列表 excel下载:自定义sql导出excel、也可在页面展示sql结果数据 字典管理:一些常量字典的维护 个人信息修改 修改密码 头像修改 其他说明: 日志模块 sl4j日志分包:将sql日志、业务日志、异常日志进行了分离,更方便定位问题 日志表:使用aop拦截实现 权限控制:基于token方式,禁用session 对各种不同异常进行了全局统一处理 使用lombok简化java代码,让源码更简洁,可读性高 mybatis未进行二次封装,原滋原味,简单sql采用注解,复杂sql采用Mapper.xml配置 使用了layui的弹出层、菜单、文件上传、富文本编辑、日历、选项卡、数据表格等 表单数据采用bootstrapValidator校验,简单快捷方便 运行环境 jdk8+mysql+redis+IntelliJ IDEA+maven 项目技术(必填) Springboot+Mybatis+ SpringMvc+springsecrity+Redis+bootstrap+jquery 数据库文件 压缩包内 jar包文件 maven搭建

81,092

社区成员

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

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