spring boot学习笔记1-aop

本文介绍如何使用 Spring AOP 和注解实现业务方法的日志记录功能。通过@Service、@Configuration等注解完成组件划分,利用@Aspect和@Pointcut定义切面及切入点,最终在控制台打印拦截信息。

spring aop 我的理解就是干杂活的,我们的web系统包含很多的组件,每个组件都有自己要干的活。但是总有需要干日志(log)、事务(transcation)、安全(secure)等杂活的。spring 提供这样一个组件专门干这些杂活那么其他组件就可以专注于做自己的事情。

由于之前算是零基础,这里需要了解spring boot的注解的含义,我通过注解的形式实现spring aop。

我们通常把系统分为业务层、持久层、控制层等。

spring容器就是bean的居住点,而spring的居住点就是BeanFactor 这个接口
常用的容器类ClassPathXmlApplicationContext、AnnotationConfigApplicationContext、 AnnotationConfigWebApplicationContext、FileSystemApplicationContex
等都是BeanFactory的子类或者实现类
AnnotationConfigApplicationContext这个容器专门为注解设计的

如果一个类带了以下注解将自动注册到容器中,不需要单独定义bean或者加@bean


@Service        一般标注业务层  ,可以自定义bean名字,@Service(“aaaaa”) 这样来指定
@Repository   一般标注持久层,即Dao组件
@Controller     一般标注控制层
@Component  一般标注泛指组件,当我们不好对组件进行归类的时候我们用Component标注

@Autoried 是spring默认的装配bean的注解,主要用在字段上。默认按照类型进行装配
@Resource是j2ee自带的装配bean的注解  默认按照安装名称进行装配

@Bean   java是面向对象编程,每一个对象都要实例化后具化才可以调用对象的属性。bean就是对象注册到spring ioc容器中的代理
spring  ioc是控制反转,由容器创建我们需要的对象不用自己创建。控制反转意思是创建对象的权限转移。

@Configuration 用于定义配置类,可替换xml配置类。被Configuration注解的类内部包含一个或多个被@Bean注解的方法,
这些bean将会被AnnotationConfigApplicationContext或者AnnotationConfigWebApplicationContext进行扫描,并用于构建bean定义和初始化spring容器

下面通过一个简单demo来实现aop

编写一个service

@Service
public class ServiceTest {

    public void testAonnation(){

        System.out.println("测试AnnotionConfigApplicationContext容器的调用方法");
    }
}

定义一个配置类

@Configuration
//AnnotationConfigApplicationContext注解扫描路径下的类,相当于在xml中配置bean
@ComponentScan("com.example.demo")
@EnableAspectJAutoProxy
public class MyConfig {
}

在默认生成的main函数里使用AnnotationConfigApplicationContext容器调用我们的service服务

@SpringBootApplication
public class AnnotationConfigApplication {

   public static void main(String[] args) {
      SpringApplication.run(AnnotationConfigApplication.class, args);

        //实例化容器AnnotationConfigApplicationContext通过注解的方式来把对应路径下的bean实例化
      AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
      ServiceTest service = context.getBean(ServiceTest.class);

      service.testAonnation();

   }
}

编写AOP监控类,拦截service中的方法

/**
*
 * Created by Administrator on 2018/2/22 0022.

*/

@Aspect
@Component
public class Logback {
/**
     * 第一个星号表示返回类型任意
     * 第二个星号表示任意字符
     * ..表示任一参数

*/
    @Pointcut("execution(* com.example.demo.ServiceTest.*(..))")
    public void logaop(){
    }

    //@Before("logaop()")
    @After("logaop()")
    public void log(){
        System.out.println("方法式拦截");
    }
}
这里我们就算完成了,运行程序控制台打印




这里注意,创建spring boot工程我们需要在pom里面引入jar来实现aop

<!--aspectj支持-->
<dependency>
   <groupId>org.aspectj</groupId>
   <artifactId>aspectjrt</artifactId>
   <version>1.8.9</version>
</dependency>
<dependency>
   <groupId>org.aspectj</groupId>
   <artifactId>aspectjweaver</artifactId>
   <version>1.8.9</version>
</dependency>






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值