前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring入门(三)——AOP

Spring入门(三)——AOP

作者头像
晚上没宵夜
发布2020-03-11 14:25:06
2520
发布2020-03-11 14:25:06
举报

1. AOP

aspect object programming ,简单来说就是把重复的代码抽取出来,然后再需要用到的地方进行切入,这里讲解基于接口的注解实现

2. 了解

  • 关注点:即重复的代码
  • 切面:关注点形成的类
  • 切入点:被切入的方法
  • 切入点表达式:通过表达式来指定被切入的方法
  • @Component():IOC的注解实现
  • @Aspect:指定为切面类的注解
  • @Pointcut:切入点表达式注解的实现
  • @Before:前置通知

3. 准备

applicationContext.xml:开启注解

代码语言:javascript
复制
<!-- 开启IOC注解的包 -->
<context:component-scan base-package="main"></context:component-scan> 

<!-- 开启AOP注解方式 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

接口 :基于接口实现,一定要写接口

代码语言:javascript
复制
public interface UserDao {

    //这里写被切入的方法
    void add();
        
}

接口实现类

代码语言:javascript
复制
@Component("UserDaoImp")
public class UserDaoImp implements UserDao {

    @Override
    public void add() {
        System.out.println("被切入的方法执行了");
    }

}

切面类:重复的代码的集合类

代码语言:javascript
复制
package main;

@Component
@Aspect
public class Logger {

    @Before("execution(* main..*(..))")
    public void beforelogger(){
        System.out.println("前置通知");
    }
    
    @After("execution(* main..*(..))")
    public void afterlogger(){
        System.out.println("后置通知");
    }
    
}

4. 运行

代码语言:javascript
复制
public static void main(String[] args) {
    
    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

    //获得Bean对象要转为接口类型
    UserDao imp = (UserDao) ac.getBean("UserDaoImp");
    //执行方法
    imp.add();

}

结果

代码语言:javascript
复制
前置通知
被切入的方法执行了
后置通知
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. AOP
  • 2. 了解
  • 3. 准备
  • 4. 运行
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档