Spring 框架的AOP之注解的方式
1. 环境搭建
1.1 导入 jar 包
- Spring 框架的基本开发包(6个);
- Spring 的传统AOP的开发包
spring-aop-4.3.10.RELEASEorg.aopalliance-1.10.0(在 Spring 依赖包中)
- aspectJ 的开发包
org.aspectj.weave-1.6.8.RELEASE.jar(在 Spring 依赖包中)spring-aspects-4.3.10.RELEASE.jar
1.2 编写 applicationContext.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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 开启自动代理 -->
<aop:aspectj-autoproxy/>
<!-- 配置目标对象 customerDao -->
<bean id="customerDao" class="com.itheima.demo.CustomerDaoImpl"/>
<!-- 配置切面类 -->
<bean id="myAspectAnno" class="com.itheima.demo.MyAspectAnno"/>
</beans>
1.3 创建包结构,编写具体的接口和实现类
com.itheima.demoCustomerDao: 接口;CustomerDaoImpl: 实现类;
- 在 applicationContext.xml 中配置
// CustomerDao.java
public interface CustomerDao{
public void save();
}
// CustomerDaoImpl.java
public class CustomerDaoImpl{
public void save(){
System.out.println("保存客户...");
}
}
// 编写测试方法
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo{
@Resource(name="customerDao")
private CustomerDao customerDao;
@Test
public void fun(){
customerDao.save();
}
}
// 编写切面类
@Aspect
public class MyAspectAnno{
// 通知(增前方法)
// @Before(切入点表达式)
@Before(value="execution(public void com.itheima.demo.CustomerDaoImpl.save())")
public void log(){
System.out.println("记录日志...");
}
}
1.4 在 applicationContext.xml 中开启自动代理
<aop:aspectj-autoproxy/>
1.5 通知类型
@Before: 前置通知;@AfterReturning: 后置通知;@Around: 环绕通知;@After: 最终通知;@AfterThrowing: 异常抛出通知;
1.6 配置通用的切入点
- 使用
@Pointcut配置通用的切入点
// 示例
@Aspect
public class MyAspectAnno{
@Before(value="MyAspectAnno.fn()")
public void log(){
System.out.println("记录日志...");
}
@After(value="MyAspectAnno.fn()")
public void after(){
System.out.println("最终通知...");
}
// 自定义切入点
@Pointcut(value="execution(public void com.itheima.demo.CustomerDaoImpl.save())")
public void fn(){}
}
参考资料
Spring 框架的AOP之注解的方式的更多相关文章
- Spring框架的AOP技术(注解方式)
1. 步骤一:创建JavaWEB项目,引入具体的开发的jar包 * 先引入Spring框架开发的基本开发包 * 再引入Spring框架的AOP的开发包 * spring的传统AOP的开发的包 * sp ...
- Spring框架的IOC之注解方式的快速入门
1. 步骤一:导入注解开发所有需要的jar包 * 引入IOC容器必须的6个jar包 * 多引入一个:Spring框架的AOP的jar包,spring-aop的jar包 2. 步骤二:创建对应的包结构, ...
- 10.Spring——框架的AOP
1.Spring 框架的 AOP 2.Spring 中基于 AOP 的 XML架构 3.Spring 中基于 AOP 的 @AspectJ 1.Spring 框架的 AOP Spring 框架的一个关 ...
- Spring框架之AOP源码完全解析
Spring框架之AOP源码完全解析 Spring可以说是Java企业开发里最重要的技术.Spring两大核心IOC(Inversion of Control控制反转)和AOP(Aspect Orie ...
- Spring 的IOC容器之注解的方式
1. 环境搭建 1.1 导入所需 jar 包 引入 IOC 容器必须的6个jar包; spring-aop-4.3.10.RELEASE.jar, Spring 框架的AOP的jar包; 1.2 创建 ...
- 使用spring框架进行aop编程实现方法调用前日志输出
aop编程 之使用spring框架实现方法调用前日志输出 使用spring框架实现AOP编程首先需要搭建spring框架环境: 使用Spring框架实现AOP工程编程之后,不需要我们去写代理工厂了,工 ...
- spring框架中的@Import注解
spring框架中的@Import注解 Spring框架中的@Import注解 在之前的文章中,作者介绍了Spring JavaConfig. 这是除了使用传统的XML文件之外,spring带来的新的 ...
- Spring 框架的 AOP 简介
Spring 框架的 AOP Spring 框架的一个关键组件是面向方面的编程(AOP)(也称为面向切面编程)框架. 面向方面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点. 跨一个应用程序的多 ...
- Spring框架(4)---AOP讲解铺垫
AOP讲解铺垫 不得不说,刚开始去理解这个Aop是有点难理解的,主要还是新的概念比较多,对于初学者一下子不一定马上能够快速吸收,所以我先对什么事Aop做一个解释: 首先说明:本文不是自己所写 ...
随机推荐
- c#动态类型
class Program { static void Main(string[] args) { dynamic test = new ExpandoObject(); test.Name = &q ...
- log4c面向对象设计 (转)
转自 http://blog.csdn.net/xkarl/article/details/6340180 Log4C,Log4CPlus/Log4cpp,Log4j,Log4Net,Log4Perl ...
- dbutils使用---QueryRunner、BeanListHandler、BeanHandler、MapListHandler、MapHandler、ScalarHandler
1. ResultSetHandler 的作用: QueryRunner 的 query 方法的返回值最终取决于 query 方法的 ResultHandler 参数的 hanlde 方法的返回值. ...
- javascript立刻执行函数
一般常见的立刻执行函数推荐如下两种: (function(a){ console.log(a); })("kk"); (function(a){ console.log(a) }( ...
- linux学习笔记26--命令wc
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的行数.字数.字节数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的行数.字 ...
- Makefile 实例实践
本文为原创文章,转帖需指明该文链接 目录结构如下: comm/inc/apue.h comm/errorhandler.c atexit.c Makefile 文件内容如下: apue.h #if ...
- Android Studio无法启动,gradle下载不了 提示“building “ 项目名”gradle project info”
Google在2013年I/O大会上发布了Android Studio,AndroidStudio是一个基于IntelliJ思想的新的Android开发工具.下面介绍一下Android Studio安 ...
- 在windows下安装Redis步骤(收集)
一.下载windows版本的Redis 去官网找了很久,发现原来在官网上可以下载的windows版本的,现在官网以及没有下载地址,只能在github上下载,官网只提供linux版本的下载 官网下载地址 ...
- Java语言中两种异常的差别
Java提供了两类主要的异常:runtime exception和checked exception.所有的checked exception是从java.lang.Exception类衍生出来的,而 ...
- 解决使用VS2013创建的MVC项目在VS2015中打开的各种问题
其实很多问题一直都存在,但是因为其不影响编译结果和运行结果,所以我也就一直没理它.但是问题放在那一直存在,偶尔想起来还有某些问题没解决的时候心里总是感觉不得劲,所以今天就彻底的查查资料解决了. 问题一 ...