SPring+Structs2实现的项目中进行Spring AOP时的相关小记



SPring+Structs2实现的项目中进行Spring AOP时的相关小记

1.一般为了方便开发Structs2的项目中的action都会建立一个BaseAction如果继承了BaseAction中的子类进行AOP时,只能指定AOP中的PointCut为BaseAction

如果对应的BaseAction如果继承于ActionSupport的话,就只能定义AOP中的PointCut为ActionSupport了

因为Spring生成的代理类中,对同名的方法,只有一个,即子类重写父类的方法,只有一个,所以如果找不到代理类直接实现的接口,就会找它的最顶级超类中去找。

2. 如果是用注解方式,原理同样,因为不好更改ActionSupport中对应的类增加对应的注解,所以只好不能继承ActionSupport了.

3. 对于非单例模式(none singleton)的类进行AOP时,需要开启proxy-target-class=”true”,使用Cglib进行aop代理处理,

 如果是业务类,一般都是接口,可以不加,对于action类中,要加上

 如下所示为用于注解方式的

<aop:aspectj-autoproxy  proxy-target-class="true" />

如下所示为用于xml配置方式的

<aop:config proxy-target-class="true">

对于采用aop拦截器方式的增加一个元素

<bean name="xxaspet"  class="com.xx.aop.LogAspect"/>

<bean name="loggingAutoProxy"

class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

<property name="proxyTargetClass" value="true"/>

<property name="beanNames"><value>.*</value></property>

<property name="interceptorNames">

<list>

<value>xxaspet</value>

</list>

</property>

</bean>

4. 对于Structs中,一般需要增加<constant name="struts.objectFactory.spring.autoWire.alwaysRespect" value="true" />,

 以便Structs2中优先使用Spring的装配类,就是Spring来负责类的加载,初始化。

5.相关PointCut说明: execution 用于匹配方法执行的连接点;

within 用于匹配指定类型内的方法执行;

this 用于匹配当前AOP代理对象类型的执行方法;注意是AOP代理对象的类型匹配,这样就可能包括引入接口也进行类型匹配;

target用于匹配当前目标对象类型的执行方法;注意是目标对象的类型匹配,这样就不包括引入接口也进行类型匹配;

args用于匹配当前执行的方法传入的参数为指定类型的执行方法;

@within 用于匹配所以持有指定注解类型内的方法;

@target 用于匹配当前目标对象类型的执行方法,其中目标对象持有指定的注解;

@args 用于匹配当前执行的方法传入的参数持有指定 注解的执行;

@annotation 用于匹配当前执行方法持有指定注解的方法;

bean: Spring AOP扩展的,AspectJ没有对于指示符,用于匹配特定名称的Bean对象的执行方法;

reference pointcut :表示引用其他命名切入点,只有@ApectJ风格支持,Schema风格不支持。

一般指PointCut可以用within指定对应包及子包的类中所有的公共方法

可以用execution指定对应包及子包的类中对应的公共方法

可以用@annotation指定对应包及子包的类中对应的具有对应注解的方法

相关地方可能存在理解错误,希望看到的朋友进行指正

时间: 2024-12-17 08:06:35

SPring+Structs2实现的项目中进行Spring AOP时的相关小记的相关文章

Spring依赖注入——java项目中使用spring注解方式进行注入

注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired.Resource.Qualifier.Service.Controller.Repository.Component. Autowired是自动注入,自动从spring的上下文找到合适的bean来注入 Resource用来指定名称注入 Qualifier和Autowired配合使用,指定bean的名称 Service,Controller,Repository分别标记类是Service层类,Contro

06_在web项目中集成Spring

在web项目中集成Spring 一.使用Servlet进行集成测试 1.直接在Servlet 加载Spring 配置文件 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); HelloService helloService = (HelloService) applicationContext.getBean("helloS

web项目中 集合Spring&amp;使用junit4测试Spring

web项目中 集合Spring 问题: 如果将 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); HelloService helloService = (HelloService) applicationContext.getBean("helloService"); helloService.sayHello(

如何在maven项目中使用spring

今天开始在maven项目下加入spring. 边学习边截图. 在这个过程中我新建了一个hellospring的项目.于是乎从这个项目出发开始研究如何在maven项目中使用spring.鉴于网上的学习资料都是spring与jsp的整合.所以在这里我也使用spring+jsp. 从一个新建的maven项目hellospring出发开始研究.

最近项目中使用Spring data jpa 踩过的坑

最近在做一个有关OA项目中使用spring data JPA 操作数据库,结果遇到了补个不可思议的麻烦.困惑了好久. 首先看一下问题吧,这就是当时测试"设置角色时,需要首先删除该用户已经拥有的角色时"报错如下图: 一开始遇到这个问题 并没有感觉到有多大问题,后来就找了几个小时还是没有结果....后来在网上搜了好多还是没有找到结果...这时的自己就崩溃了,于是就去网上 搜索有关spring data jpa 相关Insert 和delete 及update的等操作问题,结果一眼就看到了问

在Spring的新版官网中下载spring的jar包操作步骤

第一步:百度搜索Spring 第二步:点击第一个链接进入 第三步:看图吧: 第四步: 第五步: 第六步: 第七步: 第八步: 第九步: 第十步: 第十一步: 第十二步: 在Spring的新版官网中下载spring的jar包操作步骤

VC项目中,构造 CString 时,提示 explicit constructors (C2440) 的解决方法

其实还是 ANSI 和 UNICODE 编码的问题. 可以使用宏 _T() 包裹字符串,使得 ANSI 和 UNICODE 兼容.如 CString strJustAnother (_T ("This is a TCHAR string a.k.a. LPCTSTR")); 或者,给那些不想改代码人的偷懒方法,屏蔽掉这个编译错误: 在 stdafx.h 文件中你一般会发现这个宏  _ATL_CSTRING_EXPLICIT_CONSTRUCTORS 的声明. #define _ATL_

[ASP.NET] 如何透过 HTTP Handler 让 Web 项目中的图片 Response 时加上指定的文字(转)

这两天在网络上逛街的时候, 看到"Topcat"的一篇文章 "如何透过 HTTP Handler 让 Web 项目中的图案(JPG)Response时加上指定的文字" 因为之前大多都另外使用 ashx 文件刷新图片, 输出时在使用者网页上看到的连结也大多会是 *.ashx,看久了总觉得很怪╰(‵□′)╯ 还好有看到这篇文章,在此先谢谢 Cat 大大- 以下,转录自"topcat 姗舞之间的极度凝聚" 另外,请 Cat 大大恕我修改了 小-小-小-

在java项目中实现spring 和 myBatis 的整合

1.下载mybatis-spring.jar包. 2.配置好spring和mybatis环境. 3.在项目中我使用sqlSessionFactoryBean来实例化每个接口.具体的配置文件代码如下: <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="