另一种方式使用SPRING的AOP
来源:互联网 发布:股票基本知识书籍 知乎 编辑:程序博客网 时间:2024/05/19 23:16
这次使用org.springframework.aop.framework.ProxyFactoryBean,进行AOP,测试权限控制,
第一次:在XML里配置如下,去掉注解方式
[code]
<bean id="logAop" class="bbs.domain.interceptor.LogAop" />
<bean id="boardAction" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="target">
<bean class="bbs.web.action.BoardAction" />
</property>
<property name="interceptorNames">
<list>
<value>logAop</value>
</list>
</property>
</bean>
[code]
这个配置三个property分别是,明确使用cglib代理,目标对象是BoardAction 织入logAop,LogAop实现了MethodInterceptor接口,这个接口用来做around advice . 配置好后,测试,和昨天的是一样的结果,无法转入board.实际上,在Spring内部最终的实现都是一样的,无论是使用这种配置ProxyFactoryBean的方式,还是配置<aop/>,或是用注解.
通过这种方式,我们看到,在struts.xml中配置的<action name="board_*" class="boardAction" method="{1}">,boardAction是在Spring中使用org.springframework.aop.framework.ProxyFactoryBean创建的,struts2应当是把web中的form的值传给了ProxyFactoryBean,而没有传给BoardAction.这应该就是出错的原因.
第二次:也使用同样的方式,但是,是对service进行拦截.BoardAction中注入的是由代理工厂产生的代理对象.
<bean id="logAop" class="bbs.domain.interceptor.LogAop" />
<bean id="aopTest" class="org.springframework.aop.framework.ProxyFactoryBean"><!--
<property name="proxyTargetClass">
<value>true</value>
</property>
--><property name="target">
<bean class="bbs.domain.service.impl.BoardServiceBean" />
</property>
<property name="interceptorNames">
<list>
<value>logAop</value>
</list>
</property>
</bean>
<bean id="boardAction" class="bbs.web.action.BoardAction">
<property name="boardService" ref="aopTest" />
</bean>
这个当然能够实现预期的目的,登录后可以添加版块,没登录就不可能添加,但是BoardSevice中的save()方法是没有返回值的,因此无法在程序中判断是否成功添加版块,只能返回success.
当然可以为SAVE 添加String类型的返回值,但这样得不偿失,还是用Stuts2的拦截器友
- 另一种方式使用SPRING的AOP
- 备忘-Spring AOP的使用方式
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- Spring使用注解的方式实现AOP
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- 注解方式使用spring aop的步骤
- 使用Spring的注解方式实现AOP
- Spring的AOP支持 使用Annotation方式
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- Spring aop--4不同的使用方式
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- Oracle SQL精妙SQL语句讲解
- ld 的用法解析
- why computer science
- oracle 存储过程的基本语法
- 3G移动视频监控系统的开发 (1)
- 另一种方式使用SPRING的AOP
- 线段树 POJ 2352
- linux 分段、分页机制
- struts学习笔记-----环境搭建
- openjweb1.8新增工作流引擎介绍
- linux 中断
- 研究生如何做好科研和发表文章
- Makefile详解(超级好)
- linux 系统调用