本章介绍了配置文件的作用、语法结构以及基于多种方式进行配置文件的配置实现,同时对于SpringBoot如何集成logback日志框架进行日志的写入进行了详细的实战演示。
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
• application.properties
• application.yml
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
YAML(YAML Ain’t Markup Language)
YAML A Markup Language:是一个标记语言
.yml是YAML(YAML Ain’t Markup Language)语言的文件,以数据为中心,比json/xml等更适合做配置文件
标记语言:
以前的配置文件;大多都使用的是 xxxx.xml文件;
YAML:以数据为中心,比json、xml等更适合做配置文件;
YAML:配置例子
- server:
- port: 8081
XML:
k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
- server:
- port: 8081
- path: /hello
属性和值也是大小写敏感;
字面量:普通的值(数字,字符串,布尔)
对象、Map(属性和值)(键值对):
- friends:
- lastName: zhangsan
- age: 20
行内写法:
friends: {lastName: zhangsan,age: 18}
数组(List、Set):
- pets:
- - cat
- - dog
- - pig
行内写法
pets: [cat,dog,pig]
注意 :@Value的${}中包含的是核心配置文件中的键名。
编写ReadPropertiesController
编写属性,采用@Value进行属性值写入
@RestController public class ReadPropertiesController { @Value("${test.msg}") private String msg; @RequestMapping(value="/testValue") public String test1(){ return "@Value方式,得到的msg:"+msg; } }
注意:该方式是依赖注入的Environment 来完成
需要在创建的成员变量private Environment env上加上@Autowired
使用env.getProperty(“键名”)即可读取对应的值
比如:
@Autowired private Environment env; @RequestMapping(value="/testEnv") public String test2(){ return "env方式:"+env.getProperty("test.msg"); }
为了不破坏核心文件,但又需要有自定义的配置信息,一般会选择自定义配置文件来存放信息
在resources目录下创建目录 config
- mysql.username=root
- mysql.password=1234
创建config代码包
@ConfigurationProperties(prefix = "mysql",ignoreUnknownFields = false) @PropertySource("classpath:config/mysql.properties") @Component public class MySqlProperties { private String username; private String password; //生成getter and setter方法 ...... }
创建MySqlController.java
@EnableConfigurationProperties(MySqlProperties.class) @RestController public class MySqlController { @Autowired MySqlProperties mySqlProperties; @RequestMapping(value="/test") public String test(){ String username = mySqlProperties.getUsername(); String password = mySqlProperties.getPassword(); return "用户名:"+username+" , 密码:"+password; } }
TimeBaseRollingPolicy
)FixedWindowRollingPolicy
)。需求:按照时间和日志大小滚动生成日志
resources目录下添加logback.xml日志配置文件
在HelloController.java中添加日志记录实现
@RestController public class HelloController { //创建Logger对象 private static Logger logger = LoggerFactory.getLogger(HelloController.class); @RequestMapping(value="/hello") public String index(){ //日志信息写入 logger.info("HelloController.................."); return "Hello World!"; } }
启动服务,执行http://localhost:8080/hello,观察效果
控制台生成日志
本地生成日志文件