一次@value取值失败的原因

网上down了一份源码。启动后报错,通过报错信息定位到这个地方:

之前对这个@Value的实现方式我也没了解过,所以乘机对springboot关于这一块的源码研究了一下。可以参考当时我的一篇分析记录《@value》。对@value的原理又了一定的了解之后,发现问题并没有处在解析这一块,而是springboot并没有读取我们的配置文件。配置文件有两个:

那么为什么没有读去呢?然后我又分析了一下源码,发现默认情况下,只会读去默认的配置文件路径名称。分别是:

file:./config/application.properties

file:./config/application.xml

file:./config/application.yml

file:./config/application.yaml

file:./application.properties

file:./application.xml

file:./application.yml

file:./application.yaml

classpath:/config/application.properties

classpath:/config/application.xml

classpath:/config/application.yml

classpath:/config/application.yaml

classpath:/application.properties

classpath:/application.xml

classpath:/application.yml

classpath:/application.yaml

file:./config/application-default.properties

file:./config/application-default.properties

file:./config/application.properties

file:./config/application-default.xml

file:./config/application-default.xml

file:./config/application.xml

file:./config/application-default.yml

file:./config/application-default.yml

file:./config/application.yml

file:./config/application-default.yaml

file:./config/application-default.yaml

file:./config/application.yaml

file:./application-default.properties

file:./application-default.properties

file:./application.properties

file:./application-default.xml

file:./application-default.xml

file:./application.xml

file:./application-default.yml

file:./application-default.yml

file:./application.yml

file:./application-default.yaml

classpath:/config/application-default.properties

classpath:/config/application-default.properties

classpath:/config/application.properties

classpath:/config/application-default.xml

classpath:/config/application-default.xml

classpath:/config/application.xml

classpath:/config/application-default.yml

classpath:/config/application-default.yml

classpath:/config/application.yml

classpath:/config/application-default.yaml

classpath:/config/application-default.yaml

classpath:/config/application.yaml

classpath:/application-default.properties

classpath:/application-default.properties

classpath:/application-default.xml

classpath:/application-default.xml

classpath:/application.xml

classpath:/application-default.yml

classpath:/application-default.yaml

classpath:/application.yaml

并没有我们的配置文件,也就是说默认情况下是读取不到我们的配置文件的。

那么怎样才能让springboot在启动的时候读去我们指定的配置文件呢?有三种方法http://blog.csdn.net/qq_21387171/article/details/53876721:

(1)    使用@PropertySource注解

直接在启动类上使用@PropertySource注解来加载不同的配置文件,具体如下所示:

(2)    修改spring.profiles.active属性

需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值,如:spring.profiles.active=dev就会加载application-dev.properties配置文件内容,具体如下所示:

(3)    执行命令行

如上面介绍所讲的一样,我们可以使用命令行,比如执行java -jar xxx.jar --spring.profiles.active=test,可以观察到服务端口被设置为8082,也就是测试环境的配置(test)。

时间: 2024-10-13 12:36:13

一次@value取值失败的原因的相关文章

系统启动失败的原因分析及解决办法

系统启动失败的原因分析及解决办法 原因分析: 可能是配置文件/etc/fstab中错误了. 查看/etc/fstab配置文件内容: [[email protected] ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Mon Nov  7 18:40:55 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See

loadrunner动态从mysql取值

loadrunner动态从mysql取值 loadrunner动态从mysql取值 [需要下载跟数据库服务器一致的dll,32位或64位] loadrunner中有参数化从数据库中取值,但是只是静态的,对于一些要实时取值的数据就game over了,比如取短信验证码,因为MySQL中有一个libmysql.dll,里面提供了可以操作数据库的方法,所以我们可以调用这个dll连接数据库实时从数据库中取值 1 Action() 2 { 3 4 int status; //定义状态变量,0表示成功,非0

cin 对象取值过程详解

突然又空,鉴于对cin对象的去值机制还不是很了解,就探究一番,并且记下来,方便以后复习. 1 #include <iostream> 2 3 int main(void) 4 { 5 using namespace std; 6 int date = 2; 7 char ch; 8 while (!(cin >> date)){ 9 cout << "Not a number.\n"; 10 cout << date << e

php floor 取值问题

事情是这样的,在公司有客户反应会少一个进个一位数字,大概类似百度百科这样 <?php $str=41.23*5000; echo  floor($str); echo  "<br>"; echo intval($str); ?> 应该得到206150,为什么他是得到206149呢 解决办法: 可以用strval转一下 原因: 这是计算机内部问题 浮点数的计算永远都不会完全准确 例如 1/3 表示 0.333333...............后面N个3,但是计算

c#中Dictionary&lt;object, object&gt;存储网络字符取值问题

roleInfo存储的是网络的map数据,key值roleID长度居然是7,而本地定义的key2="roleID"长度是6,导致tmp[key2]总是取不到值.最后通过string.Compare通过指定长度比对,再通过tmp[key]取值才解决问题.对应为什么key值roleID长度是7,暂时未找到原因.

Jquery常用操作:checkbox、select取值,radio、checkbox、select选中及其相关

常用Jquery操作:checkbox取值.select取值.radio选中.checkbox选中.select选中及其相关: 1.影藏页面元素 使用jquery真的很方便,比如要控制div的显示与隐藏,一句话就搞定了,请看下面使用说明. $("#id").show()表示display:block, $("#id").hide()表示display:none; $("#id").toggle()切换元素的可见状态.如果元素是可见的,切换为隐藏的

sphinx下的max_matches取值对SetLimits的影响

使用PHP在客户端执行 $s -> SetLimits(0, 15, 1200); 传递的第三个参数,是服务器端设定当前查询的结果集大小为1200,但是运行结果,确实$s最终查询得到的结果为空值,为什么呢? 因为,这是由服务器原因造成的,因为服务器端存在max_matches配置项,默认取值为1000,所以若客户端取值超过1000,服务器将不返回任何信息. 知道这个原因,我们只需将服务器的max_matches配置项的值改为1200以上即可! sphinx下的max_matches取值对SetL

01- - -1.获得项目中info.plist文件的内容 2.沙盒的数据存储及读取 3.控制器view的高度和状态栏statusBar的关系 4.[UIScreen mainScreen].applicationFrame的取值 5.按钮的状态 6.错误调试技巧 7.按钮的各种状态设置

1.获得项目中info.plist文件的内容 1> [NSBundle mainBundle].infoDictionary 2> 版本号在info.plist中的key:kCFBundleVersionKey 2.沙盒的数据存储及读取 1> 数据存储: [[NSUserDefaults standardUserDefaults] setObject:version forKey:versionKey]; 存储数据时记得同步一下 [[NSUserDefaults standardUser

jQuery 取值、赋值的基本方法整理

/*获得TEXT.AREATEXT的值*/ var textval = $("#text_id").attr("value"); //或者 var textval = $("#text_id").val(); /*获取单选按钮的值*/ var valradio = $("input[@type=radio][@checked]").val(); /*获取一组名为(items)的radio被选中项的值*/ var item =