SpringBoot学习笔记(2) Spring Boot的一些配置
外部配置
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的一些配置的更多相关文章
- 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 ...
- Spring Boot 学习笔记 - 认识Spring Boot框架
因各种原因,.NET前端工程师重新接触JAVA,真是向全栈的路上又迈出了无奈的一步. 下面正文: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初 ...
- SpringBoot学习笔记:Spring Data Jpa的使用
更多请关注公众号 Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR ...
- Spring学习笔记--使用Spring基于Java的配置
我们需要使用@Component注解来定义一个配置类,在配置类中我们定义Bean: package com.moonlit.myspring; import org.springframework.c ...
- SpringBoot学习笔记(2):引入Spring Security
SpringBoot学习笔记(2):用Spring Security来保护你的应用 快速开始 本指南将引导您完成使用受Spring Security保护的资源创建简单Web应用程序的过程. 参考资料: ...
- Springboot学习笔记(六)-配置化注入
前言 前面写过一个Springboot学习笔记(一)-线程池的简化及使用,发现有个缺陷,打个比方,我这个线程池写在一个公用服务中,各项参数都定死了,现在有两个服务要调用它,一个服务的线程数通常很多,而 ...
- SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用
SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用 Spring Boot Admin是一个管理和监控Spring Boot应用程序的应用程序.本文参考文档: 官 ...
- SpringBoot学习笔记(3):静态资源处理
SpringBoot学习笔记(3):静态资源处理 在web开发中,静态资源的访问是必不可少的,如:Html.图片.js.css 等资源的访问. Spring Boot 对静态资源访问提供了很好的支持, ...
- SpringBoot学习笔记(7):Druid使用心得
SpringBoot学习笔记(7):Druid使用心得 快速开始 添加依赖 <dependency> <groupId>com.alibaba</groupId> ...
随机推荐
- 从锅炉工到AI专家(4)
手写数字识别问题 图像识别是深度学习众多主流应用之一,手写数字识别则是图像识别范畴简化版的入门学习经典案例.在TensorFlow的官方文档中,把手写数字识别"MNIST"案例称为 ...
- 【Java基础】【24多线程(上)】
24.01_多线程(多线程的引入)(了解) 1.什么是线程 线程是程序执行的一条路径, 一个进程中可以包含多条线程 多线程并发执行可以提高程序的效率, 可以同时完成多项工作 2.多线程的应用场景 红蜘 ...
- tmux的详细讲解
1. tmux介绍 tmux是一个优秀的终端复用软件,split窗口.可以在一个terminal下打开多个终端. 即使非正常掉线,也能保证当前的任务运行,这一点对于远程SSH访问特别有用,网络不好的情 ...
- JavaScriptCore全面解析
本文由云+社区发表 作者:殷源,专注移动客户端开发,微软Imagine Cup中国区特等奖获得者 JavaScript越来越多地出现在我们客户端开发的视野中,从ReactNative到JSpatch, ...
- [四]基础数据概述之Byte详解
Byte 基本数据类型byte 的包装类 Byte 类型的对象包含一个 byte类型的字段 属性简介 构造方法 Byte的构造方法也是有两种 可以通过基本类型byt ...
- 【CSS】按钮的禁用与可用 CSS Cursor 属性
禁用时的样式 可用时的样式 样式很简单,禁用就设置为灰色,可用就设置为红色,今天这个不是重点,重点的是,光标的样子 一般,禁用时候,光标移动到按钮的上方,光标如下 而在启用按钮的时候,光标移动到按钮上 ...
- MySQL在线DDL gh-ost 使用说明
背景: 作为一个DBA,大表的DDL的变更大部分都是使用Percona的pt-online-schema-change,本文说明下另一种工具gh-ost的使用:不依赖于触发器,是因为他是通过模拟从库, ...
- tomcat使用详解(week4_day2)--技术流ken
tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发 ...
- .net core使用ViewComponent将页面图片转码成base64
using System; using System.IO; using System.Threading.Tasks; using Microsoft.AspNetCore.Hosting; usi ...
- (摘)Entity Framework Core 2.1带来更好的SQL语句生成方案
微软发布了Entity Framework Core2.1,为EF开发者带来了很多期待已久的特性.EF Core 2.1增加了对SQL GROUP BY的支持,支持延迟加载和数据种子等. EF Cor ...