外部配置

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

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

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

常规属性配置

在properties文件中增加几个属性

server.port=8081
server.context-path=/demo
#声明一个name属性
user.name=张三
user.age=21

Java类

package com.ibigsea.bootdemo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* 是Spring Boot项目的核心注解,主要是开启自动配置
*/
@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
@RestController
public class App {

@Value("${user.name}")
private String name;

@Value("${user.age}")
private Long age;

@RequestMapping("/")
public String index(){
return "Hello Spring Boot, name is " + name + ", age is "+ age;
}

public static void main(String[] args) {
// SpringApplication app = new SpringApplication(App.class);
// app.setBannerMode(Mode.OFF);
// app.run(args);
SpringApplication.run(App.class, args);
}
}
运行结果:


除此之外,Spring Boot 还提供了基于类型安全的配置方式,通过@ConfigurationProperties将properties属性和一个Bean及其属性关联,从而实现类型安全的配置

在上面的情景下新增一个UserSetting类

package com.ibigsea.bootdemo;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
//通过该注解价值properties文件内的配置
//通过prefix执行properties配置的前缀
@ConfigurationProperties(prefix = "user")
public class UserSetting {
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;
}
}
使用


运行结果

日志配置


Spring boot默认的输出格式

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)
2016-07-04 23:47:27.201 INFO 28916 --- [ main] com.ibigsea.bootlog.App : No active profile set, falling back to default profiles: default
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
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]]
2016-07-04 23:47:30.227 INFO 28916 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2016-07-04 23:47:30.245 INFO 28916 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat
2016-07-04 23:47:30.245 INFO 28916 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.0.30
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, WARN和INFO级别的消息会输出到控制台

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

Jar -jar xx.jar --debug
Properties文件中添加 debug=true 即可

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


控制日志级别

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

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

logging.level.org.springframework.web: DEBUG //org.springframework.web包下面的日志级别是DEBUG的
logging.level.org.hibernate: ERROR //org.hibernate包下面的日志级别是ERROR
logging.level.com.ibigsea.*: INFO //com.ibigsea包下面的日志级别是INFO
除了Spring Boot默认的以外,还可以激活其他各种日志系统

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

这句话一直无法理解,查询资料也大都是没解释清楚,猜想的话 应该是在pom里面添加对应日志依赖,然后在项目添加对应的配置文件比如这样的


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

Profile配置

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

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

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

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

项目结构


application-dev.properties

server.port=8081
application-prd.properties

server.port=8082
application.properties

spring.profiles.active=prd
启动结果


修改spring.profiles.active为dev并启动


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

删除多余的properties文件


application.yml

server :
port : 8081
---
spring :
profiles : dev
server :
port : 8082
默认是prd环境

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


右击显示菜单选择run configurations

添加命令行参数

OK 实验成功

将程序打包之后 通过 java -jar xx.jar --spring.profiles.active=dev的方式启动
---------------------
作者:胡小海丶
来源:CSDN
原文:https://blog.csdn.net/a67474506/article/details/52013537
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/telwanggs/p/10779947.html

SpringBoot学习笔记(2) Spring Boot的一些配置相关推荐

  1. SpringBoot学习笔记:Spring Data Jpa的使用

    更多请关注公众号 Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR ...

  2. Spring Boot学习笔记:Spring Boot的Web功能

    文章目录 一.Spring Boot的Web支持 二.Thymeleaf模板引擎 (一)Thymeleaf基础知识 1.引入Thymeleaf 2.访问Model数据 3.Model中的数据迭代 4. ...

  3. Spring Boot学习笔记:Spring Boot核心配置

    文章目录 一.Spring Boot基本配置 (一)入口类与@SpringBootApplication 1.项目入口类 - SpringBootDemoApplication 2.核心注解 - @S ...

  4. SpringBoot学习笔记(3):静态资源处理

    SpringBoot学习笔记(3):静态资源处理 在web开发中,静态资源的访问是必不可少的,如:Html.图片.js.css 等资源的访问. Spring Boot 对静态资源访问提供了很好的支持, ...

  5. springboot学习笔记(五)

    一丶注值方式 1.在application.properties文件中注值 首先我们将application.yml中的学生名字和年龄给注释掉,来验证在applic.properties的注值方式. ...

  6. SpringBoot学习笔记(16):单元测试

    SpringBoot学习笔记(16):单元测试 单元测试 单元测试(英语:Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小 ...

  7. SpringBoot学习笔记(9)----SpringBoot中使用关系型数据库以及事务处理

    在实际的运用开发中,跟数据库之间的交互是必不可少的,SpringBoot也提供了两种跟数据库交互的方式. 1. 使用JdbcTemplate 在SpringBoot中提供了JdbcTemplate模板 ...

  8. SpringBoot学习笔记(16)----SpringBoot整合Swagger2

    Swagger 是一个规范和完整的框架,用于生成,描述,调用和可视化RESTful风格的web服务 http://swagger.io Springfox的前身是swagger-springmvc,是 ...

  9. SpringBoot学习笔记(8):事物处理

    SpringBoot学习笔记(8):事物处理 快速入门 在传统的JDBC事务代码开发过程中,业务代码只有一部分,大部分都是与JDBC有关的功能代码,比如数据库的获取与关闭以及事务的提交与回滚.大量的t ...

最新文章

  1. HBuilder 的快捷键
  2. oracle本地连接地址,关于Oracle本地连接出现与监听有关的问题的解决方法探讨,oracle本地连接...
  3. nodejs 改变全局前缀
  4. select自定义箭头问题 。。。和一行内不同颜色的整体鼠标滑过变色
  5. python非数值型数据_Python机器学习实战:如何处理非数值特征
  6. 经典计算机实现量子逻辑门,量子计算机:对量子逻辑门的探讨
  7. React组件的State
  8. asp.net中前台javascript与c#函数相互调方法
  9. FPGA实现VGA显示(二)——————color_bar显示及方框移动(参考开拓者FPGA开发指南)
  10. threadlocal使用_每日一题之 ThreadLocal
  11. 宝藏女孩程序媛,谈谈职场成长这些事
  12. EasyRecovery15中文版专业数据恢复软件
  13. 图相关论文阅读与总结
  14. 2020-12.24 用SURF实现简易的两张图像拼接
  15. CollabNet Subversion Edge 版本库访问规则 svn
  16. app运营,如何提高用户的参与度?
  17. 安装Anaconda和配置环境
  18. 【LeetCode102. 二叉树的层序遍历】——层序遍历
  19. 数据库面试题——索引(一)
  20. stm32第一章cortex-M3处理器概述

热门文章

  1. (42)FPGA四种常用逻辑门(同或门)
  2. (43)生成时钟Generated Clock简介
  3. (74)FPGA模块调用(VHDL调用VHDL)
  4. (46)FPGA面试题FPGA内部结构及资源
  5. ajax长轮询的问题,Ajax长轮询
  6. 2c语言程序设计_大学生学C语言的理由是什么
  7. Linux C语言操作SQLite数据库
  8. mini2440驱动分析之ADC
  9. noip初赛试题 c语言,NOIP初赛试题提高组C语言.doc
  10. linux中的进程、环境变量和虚拟地址