Spring:AOP

AOP的术语

  • 连接点:类里面的哪些方法可以被增强,这些方法就成为连接点。
  • 切入点:实际真正被增强的方法,这些方法就被成为切入点。
  • 通知(增强):实际增强的逻辑部分称为通知。通知有多种类型:前置通知、后置通知、环绕通知、异常通知、最终通知。
  • 切面:切面是一个动作。把通知应用到切入点的过程就叫切面。

基于Spring的AOP操作。

Spring框架一般都是基于AspectH实现AOP操作的。

  • 什么是AspectJ

    AspectJ不是Spring的组成部分,是一个独立的AOP框架。一般把AspectJ和Spring框架一起使用,来完成AOP的操作。

  • 基于AspectH实现AOP操作

    • 基于xml配置文件实现
    • 基于注解方式实现
  • 切入点表达式作用:知道对哪个类里的哪个方法进行增强。

  • 语法结构:execution([权限修饰符][返回类型][全类名][方法名称]([参数列表]))


基于注解,完成AOP操作

  1. 创建类,在类里定义方法

  2. 创建增强类,编写增强逻辑

  3. 进行通知的配置。

    1. 开启注解扫描<context:component-scan base-package="com.boerk.aopAnno"/>

    2. 使用注解创建User类和UserProxy的对象。

    3. 在增强类上添加注解@Aspect

      //增强的类
      @Component
      @Aspect
      public class UserProxy {}
      //被增强的类
      @Component
      public class User {}
      
    4. 在Spring配置文件中开启生成代理对象

      <aop:aspectj-autoproxy/>
      
  4. 配置不同类型的通知。

    1. 在增强类的方法上加上注解,使用切入点表达式完成。

      @Before("execution(* com.boerk.aopAnno.User.add(..))")
      
  5. 对相同的切入点进行抽取

    @Pointcut(value ="execution(* com.boerk.aopAnno.User.add(..))")
        public void pointCut(){}
    
        @Before("pointCut()")
        public void before(){
            //前置通知
            System.out.println("before");
        }
    
  6. 使用@Order(num)可以设置增强类的优先级,num越小则优先级越高。


基于XML实现AOP

  1. 创建两个类,增强类和被增强类,创建方法

  2. 在spring的配置文件中创建两个类的对象

  3. 在spring配置文件中配置切入点

    <!--配置aop增强-->
    <aop:config>
    <!--配置切入点-->
        <aop:pointcut id="p" expression="execution(* com.boerk.aopXml.User.add(..))"/>
    <!--配置切面-->
        <aop:aspect ref="userProxy">
    <!--配置增强效果具体在哪个方法上-->
            <aop:before method="before" pointcut-ref="p"></aop:before>
        </aop:aspect>
    </aop:config>
    

JDBCTemplate

什么是JDBCTemplate?

Spring框架对JDBC进行了封装,使用JDBCTemplate可以很方便地实现对数据库的增删改查操作。

查漏补缺——Druid数据连接池

//创建Properties对象
Properties properties = new Properties();
//通过类的加载器获取系统加载器然后以流的方式获取资源文件
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("Druid.properties");
//使用Properties对象调用load方法,读取资源流
properties.load(is);
//使用Druid资源工厂创建数据源
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
System.out.println(dataSource);
//通过数据源获取连接
Connection connection = dataSource.getConnection();
posted @ 2022-01-17 21:59  Boerk  阅读(25)  评论(0)    收藏  举报