【Spring4(二)】IOC注解&AOP

版权声明:本文为博主原创文章,如果喜欢欢迎收藏转载! https://blog.csdn.net/houwanle/article/details/84106753

Spring 的IOC 的注解开发(*****)

Spring的IOC的注解开发的入门

创建web项目,引入jar包

  • 在Spring4的版本中,除了引入基本的开发包以外,还需要引入aop的包。
    在这里插入图片描述

引入Spring的配置文件

  • 在src下创建一个ApplicationContext.xml
    • 引入约束:使用注解开发需要引入context约束。
    • 约束:spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html
      在这里插入图片描述

创建接口和实现类

开启Spring的组件扫描

在这里插入图片描述

在类上添加注解

在这里插入图片描述

编写测试类

在这里插入图片描述

注解方式设置属性的值

  • 注解方式:使用注解方式,可以没有set方法的。
    • 属性如果有set方法,需要将属性注入的注解添加到set方法
    • 属性如果没有set方法,需要将属性注入的注解添加到属性上。
      在这里插入图片描述

Spring IOC注解的详解

@Component:组件

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

属性注入的注解

  • 普通属性
    • @Value:设置普通属性的值
  • 对象类型属性
    • @Autowired:设置对象类型的属性的值,但是按照类型完成属性注入。
      • 我们习惯是按名称完成属性注入:必须让@Autowired注解和@Qualifiter一起使用完成按照名称属性注入。
    • @Resource:完成对象类型的属性的注入,按照名称完成属性的注入。

Bean 的其他的注解

  • 生命周期相关的注解(了解)
    • @PostConstruct:初始化方法
    • @PreDestroy:销毁方法
  • Bean的作用范围的注解
    • @Scope:作用范围
      • singleton:默认单例
      • prototype:多例
      • request
      • session
      • globalsession

IOC 的 XML 和注解开发的比较

XML 和注解的比较

  • 适用场景
    • XML:可以适用任何场景
      • 结构清晰,维护方便。
    • 注解:有些地方用不了,这个类不是自己提供的。纯注解(SSH)
      • 开发方便。

XML 和注解整合开发

  • XML 管理Bean,注解完成属性注入。

Spring 的 AOP 的XML开发(*****)

AOP 的概述

在这里插入图片描述

AOP:面向切面编程。AOP是OOP的扩展和延伸,解决OOP开发遇到的问题。
在这里插入图片描述

Spring 底层的 AOP 实现原理

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

Spring 的 AOP 底层实现(了解)

JDK 动态代理

在这里插入图片描述
在这里插入图片描述

Cglib 动态代理

  • Cglib:第三方开源代码生成类库,动态添加累的属性和方法。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

Spring AOP 的简介

  • AOP 思想最早是由AOP联盟组织提出的,Spring使用这种思想最好的框架。
    • Spring 的AOP有自己实现的方式(非常繁琐)。AspectJ是一个AOP的框架,Spring引入AspectJ作为自身AOP的开发。
    • Spring 有两套AOP开发方式
      • Spring 传统方式(弃用)。
      • Spring 基于AspectJ的AOP的开发(使用)。

AOP 开发中相关术语

在这里插入图片描述

Spring 的 AOP 的入门(AspectJ 的 XML 的方式)

创建 web 项目,引入 jar 包

  • 引入6个基本开发包
    在这里插入图片描述
  • 引入 aop 开发的相关 jar 包
    在这里插入图片描述

引入 Spring 的配置文件

  • 引入 AOP 的约束
    在这里插入图片描述

编写目标类并完成配置

在这里插入图片描述

编写测试类

  • Spring 整合 Junit 单元测试
    在这里插入图片描述

编写一个切面类

  • 编写切面类
    在这里插入图片描述
  • 将切面类交给 Spring
    在这里插入图片描述

通过 AOP 的配置实现

在这里插入图片描述

Spring 中通知类型

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

  • 前置通知:获得切入点信息
    在这里插入图片描述

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

  • 后置通知:获得切入点信息、方法的返回值
    在这里插入图片描述

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

  • 环绕通知可以组织目标方法的执行
    在这里插入图片描述

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

在这里插入图片描述

最终通知:无论代码是否有异常,总会执行。

在这里插入图片描述

引介通知(不用会)

Spring 切入点表达式写法

切入点表达式语法

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/houwanle/article/details/84106753
今日推荐