1 属性配置:
spring Boot允许使用properties文件、yaml文件或者命令行参数作为外部配置
使用@Value注解,可以直接将属性值注入到你的beans中,并通过Spring的Environment抽象或绑定到结构化对象来访问。
以前使用Spring的时候需要通过@PropertySource指明properties文件位置,然后通过@value注入.
常规属性配置
在properties文件中增加几个属性:
server.context-path=/demo
#声明一个name属性
users.name=张三
users.age=21
@RestController public class UserController { @Value("${users.name}") private String name; @Value("${users.age}") private Long age; @RequestMapping("/") public String root(){ return "root"; } @RequestMapping("/user1") public String getUser1(){ return "Hello Spring Boot, name is " + name + ", age is "+ age; } }
http://localhost:8081/demo/user1 访问可以看到结果。
除此之外,Spring Boot 还提供了基于类型安全的配置方式,通过@ConfigurationProperties将properties属性和一个Bean及其属性关联,从而实现类型安全的配置
在上面的情景下新增一个UserSetting类
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component("userinfo")
//通过该注解价值properties文件内的配置
//通过prefix执行properties配置的前缀
@ConfigurationProperties(prefix = "users")
public class UserInfo {
private String name;
private Long age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getAge() {
return age;
}
public void setAge(Long age) {
this.age = age;
}
}
@RestController public class UserController { @Resource(name = "userinfo") private UserInfo userInfo; @RequestMapping("/") public String root(){ return "root"; } @RequestMapping("/user2") public String getUser2(){ return "Hello Spring Boot, name is " + userInfo.getName() + ", age is "+ userInfo.getAge(); } }
http://localhost:8081/demo/user2 访问可以看到结果。
日志配置
Spring boot默认的输出格式
- 时间日期 — 精确到毫秒
- 日志级别 — ERROR, WARN, INFO, DEBUG or TRACE
- 进程ID
- 分隔符 — --- 标识实际日志的开始
- 线程名 — 方括号括起来(可能会截断控制台输出)
- Logger名 — 通常使用源代码的类名
- 日志内容
默认情况下ERROR, WARN和INFO级别的消息会输出到控制台
可以通过命令行开启DEBUG或者在properties文件中添加
Properties文件中添加 debug=true 即可
如果想要输出到日志文件中,那么需要在properties文件中设置logging.file或logging.path属性
控制日志级别
通过 logging.level.*= LEVEL(LEVEL是TRACE,DEBUG,INFO,WARN,FATAL,OFF)中的一个
这样表示项目中所有的日志级别都是一样的.也可以精准控制到具体的一块
除了Spring Boot默认的以外,还可以激活其他各种日志系统
由于日志是在ApplicationContext被创建之前初始化,所以不可能在Spring的@Configuration文件中,通过系统属性和传统的外部配置文件依然可以让日志系统正常工作
这句话的意思就是pom里面添加对应日志依赖,然后在resource目录下添加对应的配置文件。
比如这样的:
Spring boot 会自动激活这个日志系统
Profile配置
Profile是Spring用来针对不同环境对不同配置提供支持的,全局Profile配置使用
application-{profile}.properties 如:application-prod.properties
在本地模拟出一个开发环境和生产环境
创建application-prd.properties 和 application-dev.properties
项目结构
application-dev.properties
application-prd.properties
application.properties
启动结果
修改spring.profiles.active为dev并启动
除了上面这种配置方式,我们还有一种更简便的方式来配置多种环境,通过命令行参数配置
删除多余的properties文件
application.yml
默认是prd环境
在启动的时候增加参数 spring.profiles.active=dev
右击显示菜单选择run configurations
添加命令行参数
OK 实验成功
将程序打包之后 通过 java -jar xx.jar --spring.profiles.active=dev的方式启动