Spring的IOC的注解(学习笔记二)

1.1 @Component:组件

  • 修饰一个类,将这个类交给Spring来管理
  • 该注解有三个衍生注解(功能类似),建议使用
    • @Controller:修饰web层的类
    • @Service :修饰service层的类
    • @Repository:修饰dao层的类

属性注入的注解

  • 普通属性
    • @Value : 设置普通属性的值
  • 对象类型属性
    • @Autoware :设置对象类型的属性值,但是按照类型完成属性注入,我们习惯按照名称完成属性注入,必须让该注解与@Qualified注解一起使用,@Qualified(value="")传入具体的名称
    • @Resource : 完成对象类型的属性注入:按照名称来完成的属性,实际开发中常使用,是Spring实现的一套接口规范

Bean的其他注解

一: 生命周期相关

  • @PostConstruct :初始化方法
  • @PreDestroy :销毁方法

二:Bean的作用范围注解 @Scope:作用范围

  • singleton :默认单例
  • prototype :多例
  • request :
  • session :
  • globalsession:

1.2 IOC基于XML配置与注解配置的比较

  1. 适用场景
  • XML: 适用于任何场景,结构清晰维护方便
  • 注解:该类不是注解提供的,比如说是源代码的。开发方便
  1. XML和注解整合开发
  • XML管理Bean
  • 注解完成属性注入

Spring的AOP的XML开发

一:底层实现原理

  • 动态代理
    • JDK动态代理 :只能对实现接口的类产生代理
    • Cglib动态代理(类似于Javassist第三方代理技术):对于没有接口的类产生代理,生成子对象

二: JDK动态代理

三: Cglib动态代理

1.3 Spring的AOP开发(AspectJ的XML的方式)

  • 创建web项目,引进jar包
    • 引入基本的开发包

  • 引入aop开发相关的jar包

  • 引入Spring的配置文件

    • 引入aop约束

  • 编写目标类,完成配置

  1. 编写测试类,引入Spring单元测试的jar包

2. 编写切面类

3. 将切面类交给Spring管理

4. 通过AOP的配置来完成对目标类产生代理

1.4 Spring中的通知类型

1.4.1 前置通知: 在目标方法执行前进行操作

  • 获得切入点信息,在代理类MyAspectXML中的checkPri的方法中传入如下参数,并运行测试类,得到结果

1.4.2 后置通知: 在目标方法执行之后的操作

  • 获取切入点信息以及方法的返回值

1.4.3 环绕通知: 在目标方法执行之前和执行之后进行操作

  • 阻止目标方法的执行

1.4.4 异常抛出通知: 在程序出现异常的时候,进行的操作

1.4.5 最终通知: 不管代码有没有异常,总会执行

14.6 引介通知:

Spring的切入点表达式

  • 基于excution的函数完成的
  • 语法
    • [访问修饰符] 方法返回值 包名 类名.方法名(参数)
    • public void it.spring.demo.CustomerDao.save(..)
    • *it.spring.demo.CustomerDao+save(...)

猜你喜欢

转载自juejin.im/post/5cc6b883f265da037b611cbe