一、首先什么是Spring ?
Spring是一个非常好的一个框架,但是当我们进行项目添加一个框架或者技术配置文件比较多的时候,这时候就需要导入太多的maven依赖,每个配置文件也需要生成一个对应的xml配置文件,我们在管理项目时候就会造成jar包版本冲突等。
二、SpringBoot的概述
SpringBoot对上述Spring的缺点进行的改善和优化,Spring Boot的核心设计思想是“约定优于配置”。基于这一设计原则,Spring Boot极大地简化了项目和框架的配置,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架 。
springboot的特性
- 遵循“约定优于配置”的原则,使用Spring Boot只需要很少的配置或使用默认的配置。
- 使用JavaConfig,避免使用XML的烦琐。
- 提供Starters(启动器),简化Maven配置,避免依赖冲突。
- 提供内嵌Servlet容器,可选择内嵌Tomcat、Jetty等容器,不需要单独的Web服务器。这意味着不再需要启动Tomcat或其他任何中间件。
三、Springboot配置文件
SpringBoot是基于约定的,所以很多配置都有默认值,使用默认的全局的配置文件:
- application.properties
- application.yml
- application.yaml
- 配置文件名固定是是application
application.properties
语法结构:
service.port=8080
service.address=192.168.120.116
application.yml == application.yaml
语法结构:
service:
port: 8080
address: 192.168.120.116
# 严格区分大小写,层级之间使用缩进表示,属性值和冒号之间必须有空格
注意:如果多个配置文件同时配置了相同的内容,SpringBoot以properties文件为准。
四、读取配置文件
@Value:
用来读取配置文件中的属性值并逐个注入到Bean对象的对应属性中,只能单独的进行注入对应的属性比较麻烦。
@Environment:
我们在写项目的时候,经常会抽取一些配置项,在 Java 中通常叫做属性,也就是 Property,本质是一组键值对配置信息。使用配置项的好处在于修改起来很容易,只需修改下配置文件或命令行参数,然后重启一下就可以了。
开发过程中,大多数项目都有多套配置对应多个环境,一般来说有开发环境、测试环境和生产环境。这里的“环境”就叫做 Profile。程序可以读取到 Profile 的值,根据 Profile 的不同展示不同的特性。其实从本质上讲,“环境”也是一个“配置”,只是这个配置太重要了,也比较特殊,所以作为一个单独的概念来处理。Environment = Property + Profile
@ConfigurationProperties: 批量注入处理数据
这个注解方式需要进行导入 spring-boot-configuration-processor 这个依赖jar包
spring-boot-configuration-processor 这个注解处理器jar包导入的话,你就可以在使用@ConfigurationProperties这个注解的实体类进行提示。
@Value("${service.port}")
private int port;
System.out.println(port);
System.out.println("==============");
System.out.println(environment.getProperty("port"));
//从配置文件中读取属性,它自己不知道是哪个属性文件,
//你得写一个前缀就可以进行查找,这里查找的就是 service
@ConfigurationProperties(prefix="service") ======= service
//当然你要将这个文件进行加入容器当中 使用下面的这个注解
@Component
public void a(){
private int port; ========= port
private int address ========= address
}
五、SpringBoot的启动流程
Spring Boot程序有一个入口,就是main方法。main里面调用SpringApplication.run()启动整个Spring Boot程序,该方法所在类需要使用@SpringBootApplication复合注解。
其中需要关注的是:@SpringBootApplication注解其实是包含了三个注解:
- @EnableAutoConfiguration:SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置。简单概括一下就是,是借助@Import的帮助,将所有符合自动配置条件的bean定义加载到IoC容器。
- @SpringBootConfiguration:声明当前是一个springboot配置类
- @ComponentScan:组件扫描,可自动发现和装配Bean,功能其实就是自动扫描并加载符合条件的组件或者bean定义,最终将这些bean定义加载到IoC容器中,扫描的是根包和直包。