在Spring4.0版本中将aop换成aspectJ

本文介绍在Spring4.0中因缓存注解失效及版本限制,如何通过引入AspectJ解决类内方法调用问题。详细步骤包括:pom.xml中添加AspectJ依赖,修改Spring配置文件启用AspectJ自动代理,以及调整类中调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Spring4.0版本中将aop换成aspectJ

切换原因

项目里出现需要调用本类同方法, 出现@CacheAble等缓存注解失效
且spring版本低于4.3(版本存在依赖, 不能轻易更新spring版本呢)以下, 注入自己本身时, 启动会报错
且不想把要调用的方法提取到新的service类中
所以决定将原本的spring

操作步骤

  1. pom.xml文件引入aspectJ相关包
<properties>
	...
	<aspectj.version>1.6.9</aspectj.version>
	...
</properties>

<dependencies>
	...
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-aspects</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<dependency>
		<groupId>org.aspectj</groupId>
		<artifactId>aspectjrt</artifactId>
		<version>${aspectj.version}</version>
	</dependency>
	<dependency>
		<groupId>org.aspectj</groupId>
		<artifactId>aspectjweaver</artifactId>
		<version>${aspectj.version}</version>
		<scope>runtime</scope>
	</dependency>
	...
</dependencies>
  1. spring的xml配置增加以下内容
<aop:aspectj-autoproxy proxy-target-class="true" expose-proxy="true"/>

或新建一个xml文件, 取名 spring-aspectj.xml, 并在web.xml中增加这个xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

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

</beans>

web.xml修改

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext.xml,
            classpath*:spring-aspectj.xml
        </param-value>
    </context-param>
  1. 类中引用时, 改为
 ((当且类名)AopContext.currentProxy()).要调用缓存的方法(...);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值