1.引入jar包

sprig框架基础包+JUntil整合包+日志包+AOP包

spring的传统AOP的开发的包

  spring-aop-4.2.4.RELEASE.jar

  com.springsource.org.aopalliance-1.0.0.jar

aspectJ的开发包

  com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

  spring-aspects-4.2.4.RELEASE.jar

2.引入配置文件(AOP约束,注解约束)

<?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">

</beans>

3.创建实现类

public interface UserService {

    public void save();

    public void update();

    public void delete();
}
@Service(value="userService")
public class UserServiceImpl implements UserService {

    @Override
    public void save() {
        // TODO Auto-generated method stub
        System.out.println("业务层:保存客户..");
    }

    @Override
    public void update() {
        // TODO Auto-generated method stub
        System.out.println("业务层:更新客户..");
    }

    @Override
    public void delete() {
        // TODO Auto-generated method stub
        System.out.println("业务层:删除客户..");
    }

}

4.将实现类托管于Spring注解方式

5.创建切面类

public class MyAspectAnn {
    public void log(){
        System.out.println("前置通知..");
    }

public void arround(ProceedingJoinPoint joinPoint){
        System.out.println("环绕通知1..");
        System.out.println("环绕通知2..");
    }
    public void after(){
        System.out.println("后置通知..");
    }

}

6.将切面类托管于Spring

7.定义切面类方法的切入点

8.在配置文件中开启自动代理,并扫描注解

    <!-- 扫描注解 -->
    <context:component-scan base-package="com.spring.demo1"/>

    <!-- 开启自动代理 -->
    <aop:aspectj-autoproxy/>

9.编写测试代码

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo1 {

    @Resource(name="userService")
    private UserService userService;

    @Test
    public void m01(){
        System.out.println("=======================");
        userService.save();
        System.out.println("=======================");
        userService.update();
        System.out.println("=======================");
        userService.delete();
        System.out.println("=======================");
    }
}

效果:

最新文章

  1. struts2DMI(动态方法调用)
  2. 为什么没有MMU的处理器无法安装操作系统?
  3. SQL语句学习笔记
  4. Sharepoint 2013 网站集的删除与还原
  5. Daily Scrum 12.9
  6. signalR制作微信墙 开源
  7. 网页html结构右侧栏固定,左侧自适应大小。
  8. VVDocumenter-Xcode 规范注释生成器 插件之安装调试适应新版本
  9. LeetCode24 Swap Nodes in Pairs
  10. Asp.net 主题 【1】
  11. 多校第五场 归并排序+暴力矩阵乘+模拟+java大数&amp;amp;记忆化递归
  12. 使用CountDownLatch和CyclicBarrier处理并发线程
  13. [Python Study Notes]计算cpu使用率
  14. Problem 2. number题解
  15. elemet-ui图标—特殊字符的unicode编码表
  16. 工具 Windows安装Anaconda
  17. 【优秀的设计绘图软件】Affinity Designer Beta for Mac 1.7
  18. PowerDesiger 生成C#实体类,字段转变成大小写方法
  19. 蛋白质结构模型和功能预测:I-TASSER工具的使用
  20. mac以及centos下安装Elasticsearch 以及权限管理插件

热门文章

  1. Altera设置Virtual Pin
  2. Manager 进程间数据共享
  3. Javascript加载talbe(包含分页、数据下载功能)
  4. expect离线安装
  5. Android_Gallery(画廊)
  6. 在select标签中添加a标签
  7. Sublime Text 3,有了Anaconda就会如虎添翼
  8. 驱动层hook系统函数的时,如何屏蔽掉只读属性?
  9. windows api(GDI)实现图片旋转
  10. python元组与字典