目录

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 {
}