打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【从零开始学Spring笔记】AOP的注解开发

大家可以关注作者的账号,关注从零开始学Spring笔记文集。也可以根据目录前往作者的博客园博客进行学习。本片文件将基于黑马程序员就业班视频进行学习以及资料的分享,并记录笔记和自己的看法。欢迎大家一起学习和讨论。

【从零开始学Spring笔记】Spring学习路线

创建项目测试

第一步:创建web项目,引入jar包
引入和AOP的XML开发同样的11个jar包

可以在以前下载解压后的libs文件夹中寻找,同时也上传到百度云了,下载即可。下载链接在本系列文集的第一篇【从零开始学Spring笔记】Spring4学习路线中寻找。

第二步:引入Spring的配置文件
在 src下创建applicationContext.xml
引入aop约束。
约束:spring framework-4.2.4.RELEASE\docs\spring framework-reference\htm|\xsd-configuration.html


观看本系列文集的【从零开始学Spring笔记】Spring配置,配置aop XML文件的提示。

第三步:编写目标类并配置
和之前一样,建立接口和实现类,并配置

<!-- 配置目标对象:被增强的对象 -->	<bean id = "productDao" class="com.tyust.spring.demo2.ProductDaoImpl"></bean>

第四步:编写一个切面类,并交给Spring

package com.tyust.spring.demo1;public class MyAspect {		public void before() {		System.out.println("前置增强======================================");	}}
	<bean id="myAspect" class="com.tyust.spring.demo1.MyAspect"></bean>

第五步:使用注解的AOP对象目标类进行增强

<!-- 开启注解的AOP开发 -->	<aop:aspectj-autoproxy/>

在切面类上使用增强

@Aspectpublic class MyAspect {		@Before(value = "excution(* com.tyust.spring.demo1.OrderDao.save(..))")	public void before() {		System.out.println("前置增强======================================");	}}

第六步:编写测试类

package com.tyust.spring.demo1;import javax.annotation.Resource;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext.xml")public class SpringDemo1 {		@Resource(name = "orderDao")	private OrderDao orderDao;		@Test	public void demo1() {		orderDao.save();		orderDao.delete();		orderDao.update();		orderDao.find();			}}

输出结果

注解的AOP的通知的类型

package com.tyust.spring.demo1;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;@Aspectpublic class MyAspect {		@Before(value = "execution(* com.tyust.spring.demo1.OrderDao.save(..))")	public void before() {		System.out.println("前置增强======================================");	}		@AfterReturning(value = "execution(* com.tyust.spring.demo1.OrderDao.delete(..))",returning = "result")	public void afterReturning(Object result) {		System.out.println("后置增强======================================"+ result);	}		@Around(value = "execution(* com.tyust.spring.demo1.OrderDao.update(..))")	public Object around(ProceedingJoinPoint joinPoint) throws Throwable {		System.out.println("环绕qian增强======================================");		Object obj = joinPoint.proceed();		System.out.println("环绕hou增强======================================");		return obj;	}		@AfterThrowing(value = "execution(* com.tyust.spring.demo1.OrderDao.find(..))",throwing = "ex")	public void afterThrowing(Throwable ex) {		System.out.println("异常抛出增强======================================"+ex.getMessage());	}		@After(value = "execution(* com.tyust.spring.demo1.OrderDao.find(..))")	public void after() {		System.out.println("最终增强======================================");	}}

输出结果

AOP的注解的切入点的注解

   @Pointcut(value = "execution(* com.tyust.spring.demo1.OrderDao.find(..))")   private void pointCut1() {}      @After(value = "MyAspect.pointCut1()")   public void after() {   	System.out.println("最终增强======================================");   }

可以让配置变得更方便

总结

@Aspect:定义切面类的注解

通知类型:

  • @Before:前置通知
  • @AfterReturing:后置通知
  • @Around:环绕通知
  • @After:最终通知
  • @AfterThrowing:异常抛出通知

@Pointcut:定义切入点的注解

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Spring AOP示例(注解方式)
Spring之AOP基本概念及配置AOP
Spring MVC AOP通过注解方式拦截Controller等实现日志管理
我用一篇文搞懂了《AOP面向切面编程》
【从零开始学Spring笔记】Spring的事务管理
Spring注解@Async和@Transactional失效问题究竟是什么原因,强势解释一波
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服