Spring Boot2.0自定义配置文件使用
声明:
- spring boot 1.5 以后,ConfigurationProperties取消locations属性,因此采用PropertySource注解配合使用
- 根据Spring Boot2.0官方文档,PropertySource注解,只支持properties文件,因此排除 YAML配置
- 针对二,可考虑新建配置类,自行搜索,不再此次讨论范围
项目路径下具体使用:
1.根目录下新建自定义配置文件夹与properties配置文件
example.name=tom
example.wife=jerry
example.age=25
example.dream=top
2.创建配置文件对应的实体类
@ConfigurationProperties(prefix = "example")
@PropertySource(value = "classpath:config/config-test.properties")
@Component
public class ExampleConfig {
private String name;
private String wife;
private String age;
private String dream; get ... set
}
3.注入,直接调用
// 自定义配置文件对应配置类 注入
@Autowired
private ExampleConfig exampleConfig;
@RequestMapping(value = "/hello",method = RequestMethod.GET)
@ResponseBody
public String sayHello(){
return exampleConfig.getName() + "的老婆是"
+ exampleConfig.getWife() + ", 年龄" + exampleConfig.getAge()
+ "岁,梦想是" + exampleConfig.getDream();
}
文件目录下具体使用
生产环境中,小型项目可能需要指定具体目录下的自定义配置文件,避免反复的打包部署,实操如下:
1.yaml配置自定义配置文件在服务器的路径
config:
location: /data/rosetta/config/textclf-config.properties
2.创建配置文件对应的实体类
@ConfigurationProperties(prefix = "example")
@PropertySource(value = "file:${config.location}")
@Component
public class WeightScope { private String name;
private String scope; set ... get
}
注意:区别于项目路径下的 classpath ,服务器具体节点的配置使用 file
3.具体调度
// 注入自定义配置类
@Autowired
private WeightScope weightScope; // 直接使用即可
logger.info("request--weightScope:"+weightScope.getScope());
知识储备:
ConfigurationProperties源码:
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConfigurationProperties {
/**
* The name prefix of the properties that are valid to bind to this object. Synonym
* for {@link #prefix()}.
* @return the name prefix of the properties to bind
*/
@AliasFor("prefix")
String value() default "";
/**
* The name prefix of the properties that are valid to bind to this object. Synonym
* for {@link #value()}.
* @return the name prefix of the properties to bind
*/
@AliasFor("value")
String prefix() default "";
boolean ignoreInvalidFields() default false;
boolean ignoreUnknownFields() default true;
}
Spring Boot2.0自定义配置文件使用的更多相关文章
- IntellJ IDEA 对于 Spring Boot2.0.2 配置文件application.properties 配置
1.指定文件名称: 打开IDEA编辑位置: 找到如图位置: 点开后方设置 设置输入如下内容:(默认的配置文件名字可以使用--spring.config.name来指定,只需要指定文件的名字,文件扩展名 ...
- Spring Boot2.0+中,自定义配置类扩展springMVC的功能
在spring boot1.0+,我们可以使用WebMvcConfigurerAdapter来扩展springMVC的功能,其中自定义的拦截器并不会拦截静态资源(js.css等). @Configur ...
- (C)spring boot读取自定义配置文件时乱码解决办法
这是入门的第三天了,从简单的hello spring开始,已经慢慢接近web的样子.接下来当然是读取简单的对象属性了. 于是按照网上各位大神教的,简单写了个对象book,如上一篇(B),其他配置不需要 ...
- Spring Boot2.0之 监控管理
Spring boot监控中心: 针对微服务的服务状态,服务器的内存变化(内存.线程.日志管理等)检测服务配置连接地址是否有用(有些懒加载的情况下,用的时候发现卧槽不能用)模拟访问,懒加载.统计有多少 ...
- Spring Boot2.0使用Spring Security
一.Spring Secutity简介 Spring 是一个非常流行和成功的 Java 应用开发框架.Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性 ...
- spring boot2.0(一 ) 基础环境搭建
1.基础配置 开发环境:window jdk版本:1.8(spring boot2.0最低要求1.8) 开发工具:eclipse 构建方式:maven3 2.POM配置文件 <project x ...
- Spring Boot2.0 整合 Kafka
Kafka 概述 Apache Kafka 是一个分布式流处理平台,用于构建实时的数据管道和流式的应用.它可以让你发布和订阅流式的记录,可以储存流式的记录,并且有较好的容错性,可以在流式记录产生时就进 ...
- spring boot 2.0(一)权威发布spring boot2.0
Spring Boot2.0.0.RELEASE正式发布,在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误,然后Spring ...
- 【spring cloud】spring cloud2.X spring boot2.0.4调用feign配置Hystrix Dashboard 和 集成Turbine 【解决:Hystrix仪表盘Unable to connect to Command Metric Stream】【解决:Hystrix仪表盘Loading...】
环境: <java.version>1.8</java.version><spring-boot.version>2.0.4.RELEASE</spring- ...
随机推荐
- 【NLP】Attention Model(注意力模型)学习总结
最近一直在研究深度语义匹配算法,搭建了个模型,跑起来效果并不是很理想,在分析原因的过程中,发现注意力模型在解决这个问题上还是很有帮助的,所以花了两天研究了一下. 此文大部分参考深度学习中的注意力机制( ...
- VS2017开发的IDE扩展
Tag Helpers 智能提示 Razor Language Services: https://marketplace.visualstudio.com/items?itemName=ms-mad ...
- vue文档全局api笔记1
全局api方法 1.Vue.extend(options) 请注意,extend创建的是一个组件构造器,而不是一个具体的组件实例.所以他不能直接在new Vue中这样使用: new Vue({comp ...
- python第七章:常用模块--小白博客
yagmail模块 python标准库中发送电子邮件的模块比较复杂,因此,有许多开原的库提供了更加易用的接口来发送电子邮件,其中yagmail是一个使用比较广泛的开原项目,yagmail底层依然使用了 ...
- c++继承实例
#include <iostream> #include <vector> #include <string> using namespace std; class ...
- 固态硬盘的PCIE,SATA,M2,NVMe,AHCI分别都指什么?别再搞混了
原文:https://baijiahao.baidu.com/s?id=1616207956596122967&wfr=spider&for=pc 科技娱乐屋 18-11-0420:5 ...
- Python-面向对象简介
面向对象介绍 学习面向对象过程中会遇到一些名词,我们先解释下 名词解释 类:一个类即是对一类拥有相同属性的对象的抽象.蓝图.原型.模板.在类中定义了这些对象的都具备的属性(variables(data ...
- UnderWater+SDN论文之四
Open Source Suites for Underwater Networking:WOSS and DESERT Underwater Source: IEEE Network, 2014 仿 ...
- 学习yii2.0——行为
学习yii框架的行为之前,需要先了解yii的事件,可以参考这篇博客: 怎么理解行为 yii框架的行为有点类似于trait,可以有个大体的概念: 1.有一个类A,包含一些属性和方法,很普通的一个类A. ...
- selenium处理alert弹出框
import time from selenium import webdriver driver =webdriver.Chrome(r"D:\工具包\chromedriver.exe&q ...