目录
1.SpringBoot的特点
1.1 依赖管理
1.2 自动装配
2.容器功能
2.1 组件添加
2.2 原生配置文件引入
2.3配置绑定
1.SpringBoot的特点
1.1 依赖管理
父项目做依赖管理
依赖管理他的父项目 org.springframework.boot spring-boot-starter-parent2.3.4.RELEASE org.springframework.boot spring-boot-dependencies2.3.4.RELEASE
开发导入starter场景启动器 spring-boot-starter-* : *就某种场景 只要引入starter,这个场景的所有常规需要的依赖我们都自动引入 *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。 所有场景启动器最底层的依赖如下:
org.springframework.boot spring-boot-starter2.3.4.RELEASE compile
在当前项目里面重写配置
5.1.43
1.2 自动装配
自动装配好对应的tomcat
引入tomcat依赖并配置tomcat
引入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
@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 {
}


![[SpringBoot2--2] SpringBoot的特点和容器功能 [SpringBoot2--2] SpringBoot的特点和容器功能](http://www.mshxw.com/aiimages/31/709837.png)
