前面讲到了如何搭建一个简单的springboot应用,是不是特别简单。springboot内置了tomcat,这就大大减少了我们自己配置tomcat所产生的各种各样的配置手续包括所出现的问题。通过main方法,所有启动程序都在SpringApplication.run()这个方法里,有兴趣的童鞋可以看看其内部是如何配置数据源、启动tomcat以及注入类对象的。
现在,我们从它的配置文件application.properties开始。
springboot剔除了复杂的spring配置XML文件,所有的配置都写在此文件中。当然实际配置中还可以配置application-dev.properties和application-prod.properties测试和生成环境的配置,将application.properties作为基础公共的配置。
一、项目配置文件
1、springboot采用properties文件作为总配置文件,默认application.properties(application-dev.properties和application-prod.properties)
作为项目的启动配置,也就是说项目启动时会默认读取此配置文件的内容并加载某些配置</p>
2、springboot配置文件默认放在src/main/resource文件下,如果没有此文件springboot会采取默认配置;
推荐使用maven,springboot也是基于maven搭建的项目,其依赖包也十分全面;因此先建立好一个application.properties
二、默认配置
springboot中采取了很多默认的配置,在配置文件中需要使用默认配置名称,springboot加载时会自动读取;
一些常见的通用配置:
spring.profiles.active=prod;//激活当前环境配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource;//数据源,也就是产生数据源的jar包,这里使用druid数据源
spring.datasource.url=;//数据源,也就是MySQL或orcale连接路径
spring.datasource.username=;//数据库用户名
spring.datasource.password=;//数据库密码
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
server.port=11080;//访问端口号
server.session.timeout=1800;//session失效时间
server.error.path=/error;//错误页controller
三、自定义配置
1、当然也可以定义自定义属性,对于自定义属性配置,需要通过注解来加载</p>
com.name="111"
com.name1="222"
@Value(value="${com.name}")
private String name;//既可以将name值赋予变量
2、除了在配置文件中配置,还可以在启动jar包时候改动如:java -jar xx.jar --server.port=9090
将端口号修改为9090;符号“--”后面的即为配置文件中的配置,在多环境中,可以通过此参数随时切换配置
<p>3、有时候我们需要引入外部的静态资源和配置文件,方便动静分离,可以如此配置:
web.upload-path=//home//web//oriflame_static//
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/METAINF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${web.upload-path}
配置把默认的三个静态资源路径也记上了,最后一个是引用服务器上绝对路径
@SpringBootApplication
@PropertySource(value="file:D:/test.properties",encoding="utf-8")
public class Applcation {
public static void main(final String[] args) {
SpringApplication.run(Applcation.class, args);
}
}
即可以引导到d盘中的配置文件
四、springboot默认读取配置文件
springboot采用了默认读取配置文件的规则:
1、config/application.properties(项目根目录中config目录下)
2、config/application.yml
3、application.properties(项目根目录下)
4、application.yml
5、resources/config/application.properties(项目resources目录中config目录下)
6、resources/config/application.yml
7、resources/application.properties(项目的resources目录下),这也是我们一般存放配置文件的位置
8、resources/application.yml
五、配置的优先级:配置文件的相互覆盖
1、如果项目中有多个配置文件会存在优先级,优先级最高的属性文件会覆盖优先级较低的:
(1)、外置,在相对于应用程序运行目录的/congfig子目录里。
(2)、外置,在应用程序运行的目录里
(3)、内置,在config包内
(4)、内置,在Classpath根目录
(5)、如果同一个目录下,有application.yml也有application.properties,
默认先读取application.properties。
(6)、如果同一个配置属性,在多个配置文件都配置了,
默认使用第1个读取到的,后面读取的不覆盖前面读取到的。
(7)、创建SpringBoot项目时, 一般的配置文件放置在项目的resources目录下不要在多个配置文件配置相同属性,根据优先级,最高的文件会覆盖较低的文件中的相同属性
六、更多配置
可以自行搜索更多配置,包括模板、mybatis、redis等等, 通过设置配置,springboot加载的时候更加灵活性的容纳这些功能;