SpringBoot
SpringBoot的特点
- 无需xml,Spring 需要进行大量的配置,而SpringBoot 可以不需要XML配置而实现spring可以实现的功能,进一步简化了开发人员开发
- 约定大于配置,SpringBoot启动器的自动配置可以被开发人员的特殊要求覆盖,开发约定大于自动配置
SpringBoot项目的创建
通过maven新建quickstart项目
流程
- 新建好的项目和普通maven项目没有什么不同,先导入SpringBoot的依赖
- 导入依赖之后在java包下新建项目包,在包下新建一个名为
(项目名)Application
的启动类,名字要与项目对应
通过Spring提供的Spring Initializr自动创建
先确定网络状态良好,因为要访问外部地址
选择自己的JDK版本以及要导入的依赖jar包
正确的项目结构
测试SpringBoot项目创建是否成功
由于SpringBoot有内置tomcat和servlet,所以可以直接在启动类上运行项目
成功的标准
1.控制台显示为
2.网页url为localhost:8080 时,显示页面为
SpringBoot starter(启动器)
在spring中,复杂的xml配置文件和依赖让人头疼
SpringBoot把一条一条的依赖和配置整合为一个个启动器,会自动配置,无需在配置文件中手动配置
导入依赖spring-boot-starter-web可以提供开发所需的绝大多数依赖
SpringBoot parent
spring-boot-starter-parent 是所有 Spring Boot 项目的父级依赖,它被称为 Spring Boot 的版本仲裁中心,可以对项目内的部分常用依赖进行统一管理。
他提供了如下特性
- 默认 JDK 版本(Java 8)
- 默认字符集(UTF-8)
- 依赖管理功能
- 资源过滤
- 默认插件配置
识别 application.properties 和 application.yml 类型的配置文件
YAML配置文件
在springboot中除了properties配置文件之外还有YAML配置文件,Application*.properties和Application*.yml文件都可以被springboot识别并读取
在spring-boot-starter-parent源码中声明
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/application*.yml</exclude>
<exclude>**/application*.yaml</exclude>
<exclude>**/application*.properties</exclude>
</excludes>
</resource>
YAML的语法
- 使用缩进表示层级关系。
- 缩进的空格数不重要,但同级元素必须左侧对齐。
- 大小写敏感。
person: //对象
name: zhangsan //对象属性
age: 30
pets: //数组
-dog
-cat
-pig
car:
name: QQ
child:
name: zhangxiaosan
age: 2
相同字段对比properties
person.name = zhangsan
person.age = 30
person.pets = [dog,cat,pig]
person.car.name = QQ
person.child.name = zhangxiaosan
person.child.age = 2
SpringBoot配置文件内容的绑定
前提,配置信息在SpringBoot自动识别并读取的Application*.properties和Application*.yml中
配置在其他properties的约定配置用其他方式绑定
@Value
在具体字段上定义
注入该字段的值
需要用${value}来取值
@value
private Person person;
@ConfigurationProperties
在实体类上定义
可以注入一类事物的值
@Component
@ConfigurationProperties(prefix = "person") //这里指前缀为person的内容都会被绑定-指person对象的内容
@Data
public class Person {
private String name;
private int age;
private List<Object> pets;
private Car car;
private Child child;
}
注意点
- 只有在容器中的组件,才会拥有 SpringBoot 提供的强大功能。如果我们想要使用 @ConfigurationProperties 注解进行配置绑定,那么首先就要保证该对 JavaBean 对象在 IoC 容器中,所以需要用到 @Component 注解来添加组件到容器中
- 对象中的对象属性,比如person对象中的car对象,car的实体类需要提供get set 方法才可以成功注入,否则值为null
@PropertySource
前边提到配置在其他properties的约定配置用其他方式绑定
@PropertySource提供导入约定配置文件
@Component
@PropertySource(value = "classpath:person.properties") //导入约定配置文件
@ConfigurationProperties(prefix = "person")
@Data
public class Person {
private String name;
private int age;
private List<Object> pets;
private Car car;
private Child child;
}
SpringBoot导入spring配置文件
@ImportResourse
有些没法自动装配到spring容器的内容,需要配置创建他的bean对象,比如导入的外部jar包内的对象
和spring一样在resources目录下新建xml配置文件,然后对其进行bean声明
需要在启动类SpringApplication类中添加@ImportResource导入Spring 配置文件
@ImportResource(locations = "classpath:/beans.xml")
@SpringBootApplication
public class Springboot01Application {
public static void main(String[] args) {
SpringApplication.run(Springboot01Application.class, args);
}
}
全注解加载Spring配置
可以新建一个配置类config类,在类中完成spring的配置,代替xml配置文件
@Configuration
定义在类上,spring容器识别到该配置类
@Bean
定义在方法上,方法返回一个想配置在spring容器的bean类对象
Spring Boot Profile(多环境配置)
Spring Boot默认识别读取的Application*.properties和Application*.yml配置文件中的内容有时候需要在不同的环境下进行修改
比如开发、测试、生产时需要的是不同的环境,Spring Boot Profile可以提供针对不同的环境应用不同的配置的功能
可以声明如下四个配置文件,以这样的文件名都会被springboot自动识别读取
只需要在不同的环境在主配置文件中定义当前应用配置文件即可
application.properties:主配置文件
application-dev.properties:开发环境配置文件
application-test.properties:测试环境配置文件
application-prod.properties:生产环境配置文件