Spring的AspectJ的AOP
2021/5/21 12:27:24
本文主要是介绍Spring的AspectJ的AOP,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Spring的AspectJ的AOP
- 基于注解
- 第一步:引入aspectj依赖aop环境jar包.
- 第二步:编写被增强的类:
- 第三步:使用AspectJ注解形式:
- 第四步:创建applicationContext.xml
- 第五步:测试
- 附:AspectJ的通知类型:
- 基于XML
- 第一步:编写被增强的类:
- 第二步:定义切面
- 第三步:配置applicationContext.xml
- 第四步:测试
基于注解
第一步:引入aspectj依赖aop环境jar包.
spring-aspects-3.2.0.RELEASE.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
第二步:编写被增强的类:
@Component public class OrderDao { public void selectData() { System.out.println("----------执行selectData方法"); } }
第三步:使用AspectJ注解形式:
//切面 @Aspect @Component public class MyAspect { /* 1.第一个*号:表示返回类型,*号表示所有的类型。 2.包名:表示需要拦截的包名,后面的两个句点表示当前包和当前包的所有子包,com包、子孙包下所有类的方法。 3.第二个*号:表示类名,*号表示所有的类。 4.*(…):最后这个星号表示方法名,*号表示所有的方法,后面括弧里面表示方法的参数,两个句点表示任何参数。 */ @Before("execution(* com.dcits.pms.OrderDao.selectData(..))") public void before() { System.out.println("----------前置增强...."); } }
第四步:创建applicationContext.xml
* 引入aop的约束: xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> .... <!--开启注解--> <aop:aspectj-autoproxy proxy-target-class="true"/>
第五步:测试
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContext.xml") public class JUnitTest { @Autowired private OrderDao orderDao; @Test public void test() { orderDao.selectData(); } }
附:AspectJ的通知类型:
@Before 前置通知 @AfterReturning 后置通知 @Around 环绕通知 @AfterThrowing抛出通知 @After 最终final通知 @DeclareParents 引介通知
基于XML
第一步:编写被增强的类:
public class OrderDao { public void selectData() { System.out.println("----------执行selectData"); } }
第二步:定义切面
//切面 public class MyAspect { public void before() { System.out.println("----------前置增强...."); } }
第三步:配置applicationContext.xml
<bean id="orderDao" class="com.dcits.pms.OrderDao"></bean> <bean id="myAspect" class="com.dcits.pms.MyAspect"></bean> <aop:config> <!-- 定义切点:对哪些Joinpoint进行拦截 --> <aop:pointcut expression="execution(* com.dcits.pms.OrderDao.selectData(..))" id="mypointcut"/> <aop:aspect ref="myAspect"> <!-- 前置通知 --> <aop:before method="before" pointcut-ref="mypointcut"/> </aop:aspect> </aop:config>
第四步:测试
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContext.xml") public class JUnitTest { @Autowired private OrderDao orderDao; @Test public void test() { orderDao.selectData(); } }
这篇关于Spring的AspectJ的AOP的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南