目录
1.SpringBoot的特点
1.1 依赖管理
1.2 自动装配
2.容器功能
2.1 组件添加
2.2 原生配置文件引入
2.3配置绑定
1.SpringBoot的特点
1.1 依赖管理
- 父项目做依赖管理
依赖管理
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
他的父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
- 开发导入starter场景启动器
- spring-boot-starter-* : *就某种场景
- 只要引入starter,这个场景的所有常规需要的依赖我们都自动引入
- *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。
- 所有场景启动器最底层的依赖如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.3.4.RELEASE</version>
<scope>compile</scope>
</dependency>
- 无需关注版本号,自动版本仲裁
- 引入依赖默认都可以不写版本
- 引入非版本仲裁的jar,要写版本号。
- 可以修改默认版本号
在当前项目里面重写配置
<properties>
<mysql.version>5.1.43</mysql.version>
</properties>
1.2 自动装配
- 自动装配好对应的tomcat
- 引入tomcat依赖并配置tomcat
- 自动配好SpringMVC
- 引入SpringMVC的全套组件
- 自动配置好SpringMVC的常用组件(功能)
- 自动配置好常见的web功能 比如字符集编码问题
- 各种配置拥有默认值
- 默认配置最终都是映射到某个类上,如:MultipartProperties
- 配置文件的值最终会绑定每个类上,这个类会在容器中创建对象
- 按需加载所有的自动配置项
- 我们搭建好SpringBoot项目会自动加载非常多的starter场景启动器,他们并不会全部开启,而是根据我们设置的需求开启相关的场景启动器
- SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面
2.容器功能
2.1 组件添加
1.@Configuration 告诉springboot当前类是一个配置类
属性:proxyBeanMethods(默认是true):代理bean的方法 属性值不同则对应两种模式
Full(proxyBeanMethods = true)---组件依赖,容器中的一个组件中包含另外一个组件 Lite(proxyBeanMethods = false)---若只是单纯的注册组件而不存在组件依赖,该模式可以加快启动速度
如下场景则需要Full模式:
@Configuration(proxyBeanMethods = true) //告诉SpringBoot这是一个配置类
public class MyConfig {
@Bean
public User user01(){
User zhangsan = new User("zhangsan", 18);
//user组件依赖了Pet组件
zhangsan.setPet(tomcatPet());
return zhangsan;
}
@Bean("tom")
public Pet tomcatPet(){
return new Pet("tomcat");
}
}
2.@Bean、@Component、@Controller、@Service、@Repository 注册当前组件到ioc容器中
3.@Import
//@Import({User.class, DBHelper.class}):给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名
@Import({User.class, DBHelper.class})
@Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件
public class MyConfig {
}
4.@Conditional 条件装配:满足Conditional指定的条件,则进行组件注入 举例如下:
@ConditionalOnBean(name = "tom") //是否存在名为"tom"的组件
@ConditionalOnMissingBean(name = "tom") //是否不存在名为"tom"的组件
2.2 原生配置文件引入
1.@ImportResource 可以将我们已经配置在xml文件中的信息进行引入
@ImportResource("classpath:beans.xml")
public class MyConfig {}
2.3配置绑定
如何使用Java读取到properties文件中的内容,并且把它封装到JavaBean中,以供随时使用?
1.@Component+@ConfigurationProperties:
将我们配置在application.properties中的信息读取并属性注入
mycar.brand=BMW
mycar.price=100000
/**
* 只有在容器中的组件,才会拥有SpringBoot提供的强大功能
*/
@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
private String brand;
private Integer price;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
@Override
public String toString() {
return "Car{" +
"brand='" + brand + '\'' +
", price=" + price +
'}';
}
}
2.@EnableConfigurationProperties + @ConfigurationProperties
@EnableConfigurationProperties(Car.class)
//1、开启Car配置绑定功能
//2、把这个Car这个组件自动注册到容器中
public class MyConfig {
}