2springboot 配置文件使用介绍

1 属性配置:

spring Boot允许使用properties文件、yaml文件或者命令行参数作为外部配置

使用@Value注解,可以直接将属性值注入到你的beans中,并通过SpringEnvironment抽象或绑定到结构化对象来访问。


以前使用Spring的时候需要通过@PropertySource指明properties文件位置,然后通过@value注入.

 

常规属性配置

properties文件中增加几个属性:


server.port=8081
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 还提供了基于类型安全的配置方式,通过@ConfigurationPropertiesproperties属性和一个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默认的输出格式

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. 2016-07-04 23:47:27.195  INFO 28916 --- [           main] com.ibigsea.bootlog.App                  : Starting App on sea-pc with PID 28916 (E:\workspace\myworkspace\bootlog\target\classes started by bigsea in E:\workspace\myworkspace\bootlog)  
  2. 2016-07-04 23:47:27.201  INFO 28916 --- [           main] com.ibigsea.bootlog.App                  : No active profile set, falling back to default profiles: default  
  3. 2016-07-04 23:47:27.315  INFO 28916 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@75592f8b: startup date [Mon Jul 04 23:47:27 CST 2016]; root of context hierarchy  
  4. 2016-07-04 23:47:28.653  INFO 28916 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Overriding bean definition for bean 'beanNameViewResolver' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]]  
  5. 2016-07-04 23:47:30.227  INFO 28916 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)  
  6. 2016-07-04 23:47:30.245  INFO 28916 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat  
  7. 2016-07-04 23:47:30.245  INFO 28916 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.0.30  
  8. 2016-07-04 23:47:30.371  INFO 28916 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext  

  • 时间日期 — 精确到毫秒
  • 日志级别 — ERROR, WARN, INFO, DEBUG or TRACE
  • 进程ID
  • 分隔符 — --- 标识实际日志的开始
  • 线程名 — 方括号括起来(可能会截断控制台输出)
  • Logger名 — 通常使用源代码的类名
  • 日志内容

 

默认情况下ERROR, WARNINFO级别的消息会输出到控制台

可以通过命令行开启DEBUG或者在properties文件中添加

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. Jar -jar xx.jar --debug  

Properties文件中添加 debug=true 即可

如果想要输出到日志文件中,那么需要在properties文件中设置logging.filelogging.path属性

控制日志级别

通过 logging.level.*= LEVEL(LEVELTRACE,DEBUG,INFO,WARN,FATAL,OFF)中的一个

这样表示项目中所有的日志级别都是一样的.也可以精准控制到具体的一块

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. logging.level.org.springframework.web: DEBUG //org.springframework.web包下面的日志级别是DEBUG的  
  2. logging.level.org.hibernate: ERROR //org.hibernate包下面的日志级别是ERROR  
  3. logging.level.com.ibigsea.*: INFO //com.ibigsea包下面的日志级别是INFO  

除了Spring Boot默认的以外,还可以激活其他各种日志系统

由于日志是在ApplicationContext被创建之前初始化,所以不可能在Spring@Configuration文件中,通过系统属性和传统的外部配置文件依然可以让日志系统正常工作

这句话的意思就是pom里面添加对应日志依赖,然后在resource目录下添加对应的配置文件。

比如这样的:

Spring boot 会自动激活这个日志系统

Profile配置

ProfileSpring用来针对不同环境对不同配置提供支持的,全局Profile配置使用

application-{profile}.properties :application-prod.properties

 

在本地模拟出一个开发环境和生产环境

创建application-prd.properties 和 application-dev.properties

项目结构

application-dev.properties

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. server.port=8081  

application-prd.properties

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. server.port=8082  

application.properties

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. spring.profiles.active=prd  

启动结果

修改spring.profiles.activedev并启动

除了上面这种配置方式,我们还有一种更简便的方式来配置多种环境,通过命令行参数配置

删除多余的properties文件

application.yml

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. server :  
  2.  port : 8081  
  3. ---  
  4. spring :  
  5.   profiles : dev  
  6. server :  
  7.   port : 8082  

默认是prd环境 

在启动的时候增加参数 spring.profiles.active=dev

右击显示菜单选择run configurations

添加命令行参数 

OK 实验成功

将程序打包之后 通过 java -jar xx.jar --spring.profiles.active=dev的方式启动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值