什么是面向切面编程AOP?

AOP是啥?

举个例子,你想给你的网站加上鉴权
对某些url,你认为不需要鉴权就可以访问
对于某些url,你认为需要有特定权限的用户才能访问
如果你依然使用OOP,面向对象,那你只能在那些url对应的Controller代码里面,一个一个写上鉴权的代码
而如果你使用了AOP呢?那就像使用Spring Security进行安全管理一样简单(ps:Spring Security的拦截是基于Servlet的Filter的,不是aop,不过两者在使用方式上类似)

protected void configure(HttpSecurity http) throws Exception {
      http
        .authorizeRequests()
           .antMatchers("/static","/register").permitAll()
           .antMatchers("/user/**").hasRoles("USER", "ADMIN")

这样的做法
对原有代码毫无入侵性,这就是AOP的好处了
把和主业务无关的事情,放到代码外面去做
所以当你下次发现某一行代码经常在你的Controller里出现,比如方法入口日志打印,那就要考虑使用AOP来精简你的代码了.

一个简单的Spring的AOP例子

Aspect切片https://www.jianshu.com/p/062fe7387782

你可能感兴趣的:(什么是面向切面编程AOP?)