SpringBoot目录结构
我短暂的先理解一下,SpringBoot创建之后,主要生成了如下的目录结构
其中src目录下的
main---->
java: 源代码,主程序类
resources: 配置文件application.properties
test---->
java:使用Junit对java中的源代码进行测试
demo_springboot.iml:项目的描述性信息
pom.xml:maven仓库依赖文件dependency信息配置
各配置文件的介绍
SpringBoot使用一个全局的配置文件,配置文件名是固定的。
application.properties
or
application.yml
作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们配置好了
配置文件加载位置
springboot启动时会扫描以下位置的application.properties/yml文件作为SpringBoot的默认配置文件
-file:./config/
-file:./
-calsspath:/config/
-classpath:/
优先级从高到低,高优先级的相同配置项会覆盖低优先级的相同配置项
SpringBoot会从四个位置全部加载主配置文件,互补配置
如何使用配置文件
applicaton.yml
person:
lastName: hello
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: 12}
lists:
- lisi
- zhaoliu
组件使用application.yml
/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
* prefix = "person":配置文件中哪个下面的所有属性进行一一映射
*
* 只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能;
*
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
@Value获取值和@ConfigurationProperties获取值比较
配置文件yml还是properties他们都能获取到值;
如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;
==我们还可以通过spring.config.location来改变默认的配置文件位置==
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties
Springboot自动配置技巧
- SpringBoot启动会加载大量的自动配置类
- 我们看我们需要的功能有没有SpringBoot默认写好的自动配置类;
- 我们再来看这个自动配置类中到底配置了哪些组件;(只要我们用的组件有,我们就不需要再配置了)
- 给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们就可以在配置文件中指定这些属性的值