关键词:
Spring Boot允许使用propertities文件、yaml文件或者命令行参数作为外部配置。
命令行参数配置
Spring Boot可以基于jar包运行,打成jar包的程序可以直接通过下面的命令运行:
java -jar xx.jar
可以通以下命令修改Tomcat端口号:
java -jar xx.jar --server.port=9090
常规属性配置
在Spring Boot里,我们只需要在application.properties定义属性,直接使用@Value注入即可。
(1)application.properties属性
blog.author = 佛大Java程序员
blog.subject = Spring Boot --外部配置的属性注入
(2)修改入口类
@RestController @SpringBootApplication public class PropertiesdemoApplication { @Value("${blog.author}") private String blogAuthor; @Value("${blog.subject}") private String blogSubject; /** * 常规属性配置 * 注意路径/properties * @return */ @RequestMapping("/properties") String index(){ return "blog author is:" + blogAuthor + " and blog subject is:" + blogSubject; } public static void main(String[] args) { SpringApplication.run(PropertiesdemoApplication.class, args); } }
(3)运行,浏览器访问http://localhost:8080/properties/
类型安全的配置
类型安全一句话理解:可以批量将属性注入对象中的方法。
基于系统配置文件
(1)application.properties属性
blog.author = 佛大Java程序员
blog.subject = Spring Boot --外部配置的属性注入
(2) 类型安全的Bean
/** * @author 佛大Java程序员 * @since 1.0.0 */ @Component @ConfigurationProperties(prefix = "blog") public class BlogSetting { private String author;private String subject; public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } }
注解解释
@ConfigurationProperties加载properties文件内的配置,通过prefix属性指定properties的配置的前缀。
(3)入口类
@RestController @SpringBootApplication public class PropertiesdemoApplication { @Autowired private BlogSetting blogSetting; /** * 类型安全的配置 -- 系统属性文件 * 注意请求路径/ConfigurationProperties * @return */ @RequestMapping("/ConfigurationProperties") String index0(){ return "blog author is:" + blogSetting.getAuthor() + " and blog subject is:" + blogSetting.getSubject(); } public static void main(String[] args) { SpringApplication.run(PropertiesdemoApplication.class, args); } }
注解说明:使用@Autowires直接注入该配置。
(4) 运行
浏览器访问 -- http://localhost:8080/ConfigurationProperties
基于自定义配置文件
我们也可以新建一个自定义的properties文件,需要我们在安全类型Bean上添加@PropertySource来指定自定义的属性文件的位置。
(1) 添加自定义属性文件
customize.properties
article.author = 博客作者 -- 佛大Java程序员
article.subject = 博客主题 -- 外部配置的属性注入
(2) 类型安全的Bean
/** * @author 佛大Java程序员 * @since 1.0.0 */ @Component @ConfigurationProperties(prefix = "article") @PropertySource(value={"classpath:config/customize.properties"}) public class BlogSetting { private String author; private String subject; public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } }
注意:
@ConfigurationProperties(prefix = "article")
@PropertySource(value={"classpath:config/customize.properties"})
(3)入口类
@RestController @SpringBootApplication public class PropertiesdemoApplication { @Autowired private BlogSetting blogSetting; /** * 类型安全的配置 -- 自定义属性文件 * 注意请求路径/customizeProperties * @return */ @RequestMapping("/customizeProperties") String index1(){ return "article author is:" + blogSetting.getAuthor() + " and article subject is:" + blogSetting.getSubject(); } public static void main(String[] args) { SpringApplication.run(PropertiesdemoApplication.class, args); } }
(4) 运行
浏览器输入 -- http://localhost:8080/customizeProperties/
补充说明:
(1) 在SpringBoot1.4之后取消了@ConfigurationProperties中的属性location,原本可以用来指定属性文件的位置,上面的例子是实现使用自定义配置属性的方法之一。
(2) 注意Spring Boot常规属性配置和Spring中的注入配置文件属性中的内容的区别
Spring环境下中需要使用@PropertySource指定文件地址,若使用@Value注入,则要配置一个PropertySourcePlaceholderConfigurer的Bean。注意@Value中使用的是的“$“不是”#“。
Spring Boot中只需要在application.properties定义属性,直接使用@Value注入即可。
常见面试题:
(1) 项目中用到了Spring Boot中的哪些注解?怎么用的?(蓝月亮1-3年)
(2)项目中怎么引入外部配置中的属性?(蓝月亮1-3年)
参考:
《Spring Boot实战》-- 汪云飞 编著
springboot梳理-springboot属性配置和使用(转)
转:https://blog.csdn.net/isea533/article/details/50281151SpringBoot支持多种外部配置方式,这些方式优先级如下:命令行参数来自java:comp/env的JNDI属性Java系统属性(System.getProperties())操作系统环境变量RandomValuePropertySource配置的random.*属性值j... 查看详情
springboot属性配置和使用
...就是可以通过配置文件来注入属性或者修改默认的配置。SpringBoot系列SpringBoot入门SpringBoot属性配置和使用SpringBoot集成MyBatisSpringBoot静态资源处理SpringBoot-配置排序依赖技巧SpringBoot-DevTools介绍SpringBoot支持 查看详情
springboot属性配置和使用(代码片段)
SpringBoot属性配置和使用SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。简单说就... 查看详情
外部化配置--springboot功能
一、外部化配置SpringBoot将你的配置外部化,因此你可以在不同的环境下运行相同的代码。你可以使用properties文件,YAML文件,环境变量,命令行参数在外部配置。使用@Value注解可以直接将属性值注入到bean中,通过Spring的Environment... 查看详情
springboot属性配置和使用(代码片段)
SpringBoot属性配置和使用SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。简单说就... 查看详情
spring编程:springboot属性配置和属性优先级
SpringBoot允许我们外部化程序的配置,以便我们可以在不同的环境中使用相同的应用代码。我们可以使用properties、YAML、环境变量、命令行参数进行外部化配置。配置的属性值可以通过@Value注解直接注入到beans中,通过Sp... 查看详情
外部配置属性值是如何被绑定到xxxproperties类属性上的?--springboot源码
注:该源码分析对应SpringBoot版本为2.1.0.RELEASE1前言本篇接SpringBoot是如何实现自动配置的?--SpringBoot源码(四)温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了SpringBoot的自动配置的相关源码,自动配置相关源码... 查看详情
使用带有外部 JSON 文件的 @PropertySource 的 Spring 属性配置
...18-04-0113:00:17【问题描述】:我正在使用可以访问keycloak的springboot。我需要将keycloak配置保留在keycloak.json文件中我想使用Proper 查看详情
springboot学习总结外部配置(代码片段)
Springboot允许使用properties文件、yaml文件或者命令行参数作为外部配置(一)常规属性配置(基于properties、yaml文件)请求http://localhost:8090/yml-value-test,返回结果如下:(二)命令行参数配置当Springboot是基于jar包运行时,可以使用... 查看详情
使用 Spring Boot 和 Docker 的外部属性文件
】使用SpringBoot和Docker的外部属性文件【英文标题】:ExternalpropertiesfileusingSpringBootandDocker【发布时间】:2016-09-1501:10:54【问题描述】:我无法配置Dockerfile以在SpringBoot中使用外部属性文件。这是我的Dockerfile:FROMjava:8-jreVOLUME/tmp/var... 查看详情
springboot学习总结外部配置(命令行参数配置常规属性配置类型安全的配置之基于properties)(代码片段)
学习的内容主要是汪云飞的《SpringBoot实战》(一)命令行参数配置springboot项目可以基于jar包运行,打开jar的程序可以通过下面命令行运行:java-jarxxx.jar可以通过以下命令修改tomcat端口号java-jarxxx.jar--server.port=9090(二)常规属性... 查看详情
springboot3-外部配置
Springboot允许使用properties、yml、命令行参数作为外部配置。1、命令行配置。java-jarxxx.jar--server.prot=90902、常规属性配置。在application.yml里添加melo:name:tony@Value("$melo.name")privateStringname; 查看详情
springboot使用k8s的configmap作为外部配置
一、☀️概述springboot应用以容器的方式运行在k8s集群上面是非常方便的,但是不同的环境需要不同的配置文件,我们可以使用外部的配置中心,比如nacos、apollo。k8s也提供了configMap用来将环境配置信息和容器镜像解耦,便于应用... 查看详情
springboot外部化配置-@configurationproperties@enableconfigurationproperties
...guration4、总结3、外部化配置的核心????????接着上一章,《SpringBoot外部化配置(一)》3.2@ConfigurationProperties众所周知,当Spri 查看详情
Spring Boot 将 Java 注释上的配置属性/消息外部化
】SpringBoot将Java注释上的配置属性/消息外部化【英文标题】:Springbootexternalizeconfigproperties/messagesonJavaannotations【发布时间】:2016-12-3015:36:54【问题描述】:有没有办法在spring中从外部属性文件中读取文本而不使用@Value注释。例如... 查看详情
使用spring boot时如何配置动态属性?
】使用springboot时如何配置动态属性?【英文标题】:Howtoconfiguredynamicpropertieswhileusingspringboot?【发布时间】:2015-04-2915:07:59【问题描述】:我打算在我的作业中使用SpringBoot。它是一个连接到数据库的典型服务器应用程序。我知道... 查看详情
springboot配置文件详解(告别xml)
参考技术A快速学会和掌握SpringBoot的核心配置文件的使用。SpringBoot提供了丰富的外部配置,常见的有:其中核心配置文件我们并不陌生,主要以Key-Value的形式进行配置,其中属性Key主要分为两种:在application.properties添加配置如... 查看详情
springboot内置的各种starter是怎样构建的?--springboot源码
注:该源码分析对应SpringBoot版本为2.1.0.RELEASE1温故而知新本篇接外部配置属性值是如何被绑定到XxxProperties类属性上的?--SpringBoot源码(五)温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了SpringBoot外部配置属性... 查看详情