在Spring Boot框架中使用AOP

栏目: Java · 发布时间: 7年前

内容简介:Spring Boot是基于Spring的用来开发Web应用的框架,功能与Spring MVC有点类似,但是Spring Boot的一大特点就是需要的配置非常少。Spring Boot推荐假设现在有这样一种场景,需要统计某个接口的处理耗时,我们可以使用AOP来实现,在Spring Boot中使用AOP也非常简单,只需要一点简单的配置即可。这是一个使用@RestController注解的Controller类,这个类会去下载一些XML文件,然后压缩,最后删除下载的XML文件。现在我们要统计整个处理过程的耗时

作者简介

彬哥,目前任职于饿了么,从事饿了么物流侧核心系统的开发工作,喜爱钻研各种技术,用技术解决实际问题。

在Spring Boot框架中使用AOP

Spring Boot是基于Spring的用来开发Web应用的框架,功能与Spring MVC有点类似,但是Spring Boot的一大特点就是需要的配置非常少。Spring Boot推荐 convention over configuration ,也就是约定大于配置,因此Spring Boot会帮你做许多自动的配置,并且Spring Boot使用的是Java Config,几乎可以做到零XML文件配置。

假设现在有这样一种场景,需要统计某个接口的处理耗时,我们可以使用AOP来实现,在Spring Boot中使用AOP也非常简单,只需要一点简单的配置即可。

需要使用AOP的类

@RestController
public class DownloadController {

    @Autowired
    private XmlDownloadService downloadService;

    @Autowired
    private XmlFileClearService clearService;

    @RequestMapping("/download")
    @Timer
    public String download() throws Exception {
        downloadService.download();
        clearService.compress();
        clearService.clearAll();
        return "ok";
    }

}
复制代码

这是一个使用@RestController注解的Controller类,这个类会去下载一些XML文件,然后压缩,最后删除下载的XML文件。现在我们要统计整个处理过程的耗时,使用AOP来实现。在 download 上使用了一个 @Timer 注解,这是一个自定义的普通注解,用来标记这个方法作为一个切点。

Aspect类

@Aspect
@Component
public class VipAspect {

    private static final Logger logger = LoggerFactory.getLogger(VipAspect.class);

    private long start;

    //定义切点
    @Pointcut("@annotation(cn.magicwindow.mlink.content.annotation.Timer)")
    public void timer(){}

    //在方法执行前执行
    @Before("timer()")
    public void before() {
        start = System.currentTimeMillis();
    }

    //在方法执行后执行
    @After("timer()")
    public void after() {
        long now = System.currentTimeMillis();
        logger.info("job took time {}s in summary", (now - start) / 1000);
    }
}
复制代码

这里使用了注解来标记切点,也可以直接按照方法名称来定义,具体的使用方法可以参考官方文档。

配置Spring Boot支持AOP

@Configuration
@EnableAspectJAutoProxy
public class Config {
}
复制代码

只需要使用 @EnableAspectJAutoProxy 注解开启Spring Boot的AOP支持即可。

最后,在调用 download 方法之后就会打印出本次处理的用时。

阅读博客还不过瘾?

欢迎大家扫二维码加入交流群,讨论和博客有关的技术问题,还可以和博主有更多互动

在Spring Boot框架中使用AOP

博客转载、线下活动及合作等问题请邮件至

shadowfly_zyl@hotmail.com

进行沟通


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Web Designer's Idea Book

The Web Designer's Idea Book

Patrick Mcneil / How / 2008-10-6 / USD 25.00

The Web Designer's Idea Book includes more than 700 websites arranged thematically, so you can find inspiration for layout, color, style and more. Author Patrick McNeil has cataloged more than 5,000 s......一起来看看 《The Web Designer's Idea Book》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具