外部配置

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
版权声明:本文为博主原创文章,转载请附上博文链接!

SpringBoot学习笔记(2) Spring Boot的一些配置的更多相关文章

  1. Spring boot 官网学习笔记 - Using Spring Boot without the Parent POM,但是还要使用Parent POM提供的便利

    If you do not want to use the spring-boot-starter-parent, you can still keep the benefit of the depe ...

  2. Spring Boot 学习笔记 - 认识Spring Boot框架

    因各种原因,.NET前端工程师重新接触JAVA,真是向全栈的路上又迈出了无奈的一步. 下面正文: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初 ...

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

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

  4. Spring学习笔记--使用Spring基于Java的配置

    我们需要使用@Component注解来定义一个配置类,在配置类中我们定义Bean: package com.moonlit.myspring; import org.springframework.c ...

  5. SpringBoot学习笔记(2):引入Spring Security

    SpringBoot学习笔记(2):用Spring Security来保护你的应用 快速开始 本指南将引导您完成使用受Spring Security保护的资源创建简单Web应用程序的过程. 参考资料: ...

  6. Springboot学习笔记(六)-配置化注入

    前言 前面写过一个Springboot学习笔记(一)-线程池的简化及使用,发现有个缺陷,打个比方,我这个线程池写在一个公用服务中,各项参数都定死了,现在有两个服务要调用它,一个服务的线程数通常很多,而 ...

  7. SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用

    SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用 Spring Boot Admin是一个管理和监控Spring Boot应用程序的应用程序.本文参考文档: 官 ...

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

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

  9. SpringBoot学习笔记(7):Druid使用心得

    SpringBoot学习笔记(7):Druid使用心得 快速开始 添加依赖 <dependency> <groupId>com.alibaba</groupId> ...

随机推荐

  1. 拥抱单页网站! jQuery全屏滚动插件fullPage.js

    不知道从什么时候开始,单页网站就悄悄走进人们的视线,尤其是国外的网站,更是钟爱单页网站.制作一个全屏滚动的效果,然后每个滚动页弄一个好看的背景色,配上一些描述性的文字,大家都喜欢这么弄,仿佛逼格瞬间可 ...

  2. VSCode入门----设置成中文

    将VScode设置成中文. 1.如下图,安装中文插件,点击左边后,输入chinese搜索,然后选择中文件简体进行安装. 2.按住Ctrl+Shift+P,然后输入 configure ,如下图,选择“ ...

  3. 如何学习SpringCloud?(SpringCloud模板)

    前言 对于SpringCloud来说(下面简称SC),现在网上已经有很多教程写的非常详细,因为SC的组件特别多,虽然不是所有组件都需要用到,但是学习的时候我们都需要去学习和了解.所以我想如果再写把每一 ...

  4. Win 7 家庭普通版系统升级密钥

    VQB3X-Q3KP8-WJ2H8-R6B6D-7QJB7 (高级版)FJGCP-4DFJD-GJY49-VJBQ7-HYRR2 (旗舰版)要先升级到高级版再升级旗舰版,不然(可能)会出错.

  5. cache2go源码最后一讲 - examples

    先看一下我们讲到哪里了: cache2go的源码前面我们已经讲完了cacheitem和cachetable的实现,今天cahce和examples会一起讲完~ 1.cache.go源码 ​      ...

  6. 如何用sysbench做好IO性能测试

    sysbench 是一个非常经典的综合性能测试工具,通常都用它来做数据库的性能压测,但也可以用来做CPU,IO的性能测试.而对于IO测试,不是很推荐sysbench,倒不是说它有错误,工具本身没有任何 ...

  7. springmvc 项目完整示例08 前台页面以及知识点总结

    至此已经基本测试成功了,我们稍作完善,让它成为一个更加完整的项目 我们现在重新规划下逻辑 两个页面 一个登录页面 一个欢迎页面 登陆页面输入账号密码,登陆成功的话,跳转登陆成功 欢迎页面 并且,更新用 ...

  8. windows查看端口占用 windows端口占用 查找端口占用程序 强制结束端口占用 查看某个端口被占用的解决方法 如何查看Windows下端口占用情况

    windows下查询端口占用情况 ,强制结束端口占用程序 查询8080端口被那个程序占用 如何强制结束windows下端口占用情况? 下面操作在win10下 在控制台执行命令   1.列出所有端口的情 ...

  9. ASP.NET Core教程【二】从保存数据看Razor Page的特有属性与服务端验证

    前文索引:ASP.NET Core教程[一]关于Razor Page的知识 在layout.cshtml文件中,我们可以看到如下代码: <a asp-page="/Index" ...

  10. Perl List::Util模块用法详解

    本文介绍Perl标准库List::Utils中的列表工具,有时候它们非常好用.比如Perl中测试列表中是否包含某个元素(某个元素是否存在于列表中)没有比较直接比较方便的功能,但使用List::Util ...