image.png

1. Spring-v1.0 配置文件

|

1.0 项目pom.xml增加maven的版本

  1. <properties>
  2. <maven-jar-plugin.version>3.6.3</maven-jar-plugin.version>
  3. <maven.complier.source>8</maven.complier.source>
  4. <maven.complier.target>8</maven.complier.target>
  5. </properties>

| | —- | |

1.1 module的pom.xml中增加Spring-context的依赖

增加了一个spring-context,便于创建bean对象```xml

org.springframework spring-context 1.2.9

 |
| <a name="HIbuc"></a>
## 1.2 在modul中的配置文件  applicationContext.xml
```xml
<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- xsi: xml schema definition: 定义xml文档结构的-->

  <bean class="com.bobo.service.UserService"></bean>


</beans>

| | spring-v1.0png.png
注:此时在applicationContext.xml中配置的是标签 |

2. Spring-v2.0 容器扫描 Spring-tx

特点: 注解的一个过渡时期

2.1 新增了2个内容

compoment-scan
@Compoment 注解
作用: 简化bean的管理
| | spring-v2.0.png
注:在applicationContex.xml中配置的是标签 |

3. Spring-v3.x 静态注解

|

3.1 spring-v3.0spring-v3.0.png
特点: 配置文件+配置类混合的时代

| | —- | |

3.2 spring-v3.1

特点: 没有配置文件,用@component + 配置类中用
@ComponentScan @Configuration

spring-v3.1.png
| |

3.3 Spring-v3.1 多个配置类

@Server/@Component @Import(value={})

多个配置类Spring-v3.1.png

创建/解析过程:
1. module中的applicationContext.xml开启context组件扫描
1. 创建多个JavaBean类,并用@component进行注解
1. 创建多个Java配置类,创建方法返回对应的javaBean实例,并用@Bean进行注解标识,并用@configuration进行配置类标识
1. 主配置文件中,用@configuration进行配置类标识;@ComponentScan进行组件扫描,获取对应的JavaBean类以及配置类;@Import(value={ }) 引入其他配置类

|

4. Spring-3.2x 动态注入JavaBean类—->对Import标签的变形

|

4.1 方法一: 实现ImportSelector类

多配置类简写情况Spring-v3.1.png

此时不会将ImportSelect接口的实现类注入到容器中,而是将实现类中的方法的返回值注入其中。 | | —- | |

4.2 方法二:实现ImportBeanDefinitionRegistrar
importBeanDefinitionRegestrar接口.png

通过注册javaBean的形式,将bean对象注册到ImportBeanDefinitionRegistrar接口的实现类的容器中。 |

5. Spring-v3.2 Enablexxx注解

Spring-v3.2x-Enable注解.png
@Enablexxx 的本质就是之前所讲的@Import

6. Spring-v4.0 @Conditional注解

|

6.1 用法

Spring-v4.0-conditional.png | | —- |

7. Spring-v5.0 @Indexed注解

作用: 解决@Component注解的效率问题
已经在@ComponentScan中内嵌了

8. 额外知识点: SPI

|

8.1 SPI理论
service provider interface

image.png | | —- | |

8.2 step1: 创建接口及实现类

Spring中SPI 的接口及接口实现类(一)png.png | |

8.3 step2: 动态调用接口实现类(多个实现类情况下,原理一样)

Spring中SPI的接口及其实现类的调用.png | | | | |