对于想了解在springboot中的application.yml文件属性中分配系统属性的读者,本文将提供新的信息,我们将详细介绍springboot中,在yml文件中配置属性,并且为您提供关于7.S
对于想了解在 spring boot 中的 application.yml 文件属性中分配系统属性的读者,本文将提供新的信息,我们将详细介绍springboot中,在yml文件中配置属性,并且为您提供关于7.Spring Boot配置文件application.yml、IDEA开发spring boot应用时 application.yml 或 application.properties 自定义属性提示、Spring Boot 2 忽略在 application.yml 中设置的 HikariCP 属性、Spring Boot application.yml application.properties 优先级的有价值信息。
本文目录一览:- 在 spring boot 中的 application.yml 文件属性中分配系统属性(springboot中,在yml文件中配置属性)
- 7.Spring Boot配置文件application.yml
- IDEA开发spring boot应用时 application.yml 或 application.properties 自定义属性提示
- Spring Boot 2 忽略在 application.yml 中设置的 HikariCP 属性
- Spring Boot application.yml application.properties 优先级
在 spring boot 中的 application.yml 文件属性中分配系统属性(springboot中,在yml文件中配置属性)
如何解决在 spring boot 中的 application.yml 文件属性中分配系统属性?
在我的 Spring Boot 应用程序中,我将值设置为如下所示 -
System.setProperty("INFLUX_PASSWORD",password);
ApplicationContext applicationContext = SpringApplication.run(MyApplication.class,args);
在 application.yml
文件中,我将其用作 -
password: ${INFLUX_PASSWORD}
我的问题是,为 application.yml
文件中的属性分配动态值是正确的方法。
如何验证值已分配给 password
文件中的 application.yml
属性
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
7.Spring Boot配置文件application.yml
一、创建配置文件
如图所示,我们在resources文件夹中新建配置文件application.yml
结构图
二、一些基本配置
server:
port: 8090 //配置端口
session-timeout: 30
tomcat.max-threads: 0
tomcat.uri-encoding: UTF-8
spring:
datasource: //数据库配置
url : jdbc:mysql://localhost:3306/newbirds
username : root
password : mymysql
driverClassName : com.mysql.jdbc.Driver
注意:key后面的冒号,后面一定要跟一个空格
三 、自定义的配置
1、在application.yml文件中我们自己定义了age 、name 、manInfo等参数,其中manInfo引用了age、name,引用的格式"${参数名}"
server:
//端口
port: 8081
age: 18
name: jason
manInfo: "age:${age},name:${name}"
怎么使用这些配置呢?我们创建GetManInfo文件(参照上面结构图),
使用配置格式
@Value("${配置文件中的参数名}")
类型 参数名
详细如下
package com.alun;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by Administrator on 2017/5/28.
*/
@RestController
public class GetManInfo {
//获取配置文件中的age
@Value("${age}")
private int age;
//获取配置文件中的name
@Value("${name}")
private String name;
//获取配置文件中的manInfo
@Value("${manInfo}")
private String manInfo;
@RequestMapping(value = "/getAge",method= RequestMethod.GET)
public int getAge(){
return age;
}
@RequestMapping(value = "/getName",method= RequestMethod.GET)
public String getNme(){
return name;
}
@RequestMapping(value = "/getManInfo",method= RequestMethod.GET)
public String getManInfo(){
return manInfo;
}
}
2、一个一个的@Value获取觉得很烦,有办法解决么?这个....当然有啊!
在application.yml我们改成这样
server:
port: 8081
manInfo:
age: 18
name: jason
新建一个ManInfoProperties文件,(结构参照结构图)使用
@Component
@ConfigurationProperties( prefix = "配置文件里的参数名" )
package com.alun;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* Created by Administrator on 2017/5/28.
*/
@Component
@ConfigurationProperties( prefix = "manInfo" )
public class ManInfoProperties {
private String age;
private String name;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在GetManInfo里 使用 @Autowired
package com.alun;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by Administrator on 2017/5/28.
*/
@RestController
public class GetManInfo {
@Autowired
private ManInfoProperties manInfoProperties;
@RequestMapping(value = "/getManInfo",method= RequestMethod.GET)
public String getManInfo(){
return manInfoProperties.getAge();
}
}
四、多环境配置
多环境配置
如上图,创建application-dev.yml(测试环境)和application-prod.yml(生产)环境
application-dev.yml
server:
port: 8080
manInfo:
age: 18
name: jason
application-prod.yml
server:
port: 8081
manInfo:
age: 18
name: alun
而原有的application.yml则改成这样:
spring:
profiles:
active: prod
spring.profiles.active: 配置文件名(比如这里是 prod或者dev)
IDEA开发spring boot应用时 application.yml 或 application.properties 自定义属性提示
在使用spring boot开发过程中,经常会定义一些应用自己的属性,直接写到application配置文件中使用@Value注解进行使用,这样使用也没有什么问题。不过我认为更优雅的方式是定义自己的属性类统一管理,这样在idea中,既能自动提示,又能对配置进行分类管理,显得有条不紊,下面是具体的配置步骤。
第一步:添加依赖(分为maven和gradle两种方式)
1.1 如果你使用的是maven
增加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
1.2 如果你使用的是gradle
增加依赖并且配置annotationProcessor
compileOnly ''org.springframework.boot:spring-boot-configuration-processor''
annotationProcessor ‘org.springframework.boot:spring-boot-configuration-processor’
第二步:创建配置属性类
@Data
@ConfigurationProperties(prefix = “myapp.prefix")
public class MyAppProperties {
private String prop1;
private int prop2;
}
第三步:在配置类中增加注解
@Configuration
@EnableConfigurationProperties(MyAppProperties.class)
public class MyConfig {
}
第四步:使用属性类
@Component
public class MyComponent {
private final MyAppProperties properties;
public MyComponent(MyAppProperties properties) {
this.properties = properties;
}
// 现在可以使用了
}
对了,别忘记配置你的application.yml
myapp:
prefix:
prop1: 1111
prop2: 2222
或 application.properties
myapp.prefix.prop1=1111
myapp.prefix.prop2=2222
另外需要注意:如果想要idea中自动提示生效,需要重新运行你的应用,有时候没那么快生效。
Spring Boot 2 忽略在 application.yml 中设置的 HikariCP 属性
您正在使用 Spring Cloud 连接器库来创建数据库连接。
compile group: 'org.springframework.cloud',name: 'spring-cloud-cloudfoundry-connector',version: '2.0.7.RELEASE'
compile group: 'org.springframework.cloud',name: 'spring-cloud-spring-service-connector',version: '2.0.7.RELEASE'
此库位于 maintenance mode 中,不鼓励使用。不鼓励使用它的原因之一是它不能很好地与 Spring Boot 配置配合使用。当使用 cloudFactory.getCloud().getServiceConnector()
之类的连接器 API 创建服务连接 bean 时,Spring Boot 自动配置会退避并且忽略 spring.datasource.*
之类的属性。如果出于某种原因必须继续使用连接器,则您需要使用连接器 API 将池选项配置为 shown in the documentation。
更好的选择是移除对连接器的依赖并改用 Java CFEnv。
,在遵循 Scott 的建议之后。我能够使其工作如下。
build.yml
implementation 'io.pivotal.cfenv:java-cfenv-boot:2.3.0'
application.yml
保持不变
CloudConfig.java
@Configuration
public class CloudConfig {
@Primary
@Bean(name = "myDataSource")
@ConfigurationProperties("spring.datasource.hikari") // added this
public DataSource becscmDataSource() {
CfJdbcEnv cfJdbcEnv = new CfJdbcEnv();
CfJdbcService myJdbc = cfJdbcEnv.findJdbcServiceByName("my-maria-rds");
DataSourceBuilder builder = DataSourceBuilder.create();
builder.url(myJdbc.getJdbcUrl());
builder.username(myJdbc.getUsername());
builder.password(myJdbc.getPassword());
builder.driverClassName("org.mariadb.jdbc.Driver");
return builder.build();
}
}
Spring Boot application.yml application.properties 优先级
<divid="article_content" data-mod="popu_307" data-dsm="post" data-pid="blog"> <div> <svg xmlns="http://www.w3.org/2000/svg" title="CSDN 认证原创"aria-hidden="true"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#CSDN_Cert" /> </svg>
转载:https://blog.csdn.net/testcs_dn/article/details/79010798
<p>stackoverflow 上有个问题是:<ahref="https://stackoverflow.com/questions/31970576/can-application-properties-and-application-yml-be-mixed" target="_blank" rel="nofollow">Can application.properties and application.yml be mixed?</a></p>
<p> </p>
<p>Spring Boot 虽然做了大量的工作来简化配置,但其配置依然是相当的复杂!</p>
<p> 支持的外部配置方式就高达 17 种之多,当然这很灵活,但灵活就意味着复杂度的提升。</p>
<p> </p>
<p> 这里只说说 & nbsp;application.yml 和 application.properties 两个文件的优先级 </p>
<p> </p>
<p> 如果你的项目中存在 & nbsp;<span>application.properties 文件,</span></p>
<p><span> 那么 & nbsp;<span>application.yml 文件就只是一个摆设。</span></span></p>
<p> </p>
<p><span><span> 为什么这么说呢?</span></span></p>
<p><span><span> 我在 & nbsp;<span>application.properties</span> 文件中配置了:</span></span></p>
<p>server.port=8085</p>
<p> </p>
<p> 在 & nbsp;<span>application.yml 文件中配置了:</span></p>
<p>server:</p>
<p> port: 8086</p>
<p> 启动项目,控制台输出:</p>
<p><span>main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8085 (http)</span></p>
<p> 充分说明了这一点。</p>
<p> 你可能还会关注:<span><strong><a href="http://blog.csdn.net/testcs_dn/article/details/78959700" target="_blank" rel="nofollow">application.properties 文件和 application.yml 文件有什么区别呢?</a></strong></span></p>
<h1><a name="t0"></a>2018-09-26 更新 </h1>
<p> 更新一下对这两个文件的认识,</p>
<p> 其实 & nbsp;<span><span>application.yml </span></span > 文件会被优先加载,</p>
<p> 而如果同时存在 & nbsp;<span>application.properties 文件,并且存在相同的配置,</span></p>
<p><span> 那么则会用 </span> <span>application.properties 文件中的配置覆盖之前的配置;</span></p>
<p><span> 也就是说哪个文件被最后加载,哪个才具有最高级别,</span></p>
<p><span> 因为最后的,会覆盖前面所有的。</span></p>
<h1><a name="t1"></a>2019-02-22 更新 </h1>
<p> 一直比较懒,没去跟踪代码看看底层的究竟;</p>
<p> 关注这个的人还挺多,但何必在这个问题上纠结呢!</p>
<p> 喜欢哪种格式的就用哪种,不要让两种同时存在就好了。</p>
<h1><a name="t2"></a>2019-02-25 更新 </h1>
<p> 有些人可能喜欢追求问题的根源,或者说真相,我这里也看看。</p>
<p> 我的方法:</p>
<p>1、application.properties 文件中加入:</p>
<prename="code"><code>logging.level.root= debug</code><divonclick="hljs.signin (event)" data-title="登录后复制"></div></pre>
<p> 你在 application.yml 中也可以,注意格式。</p>
<p>2、Eclipse 控制台日志输出调大一点,不然可能显示不全 </p>
<p> 控制台窗口空白处右键,首选项 </p>
<p><img width="330" height="427"alt="" src="https://img-blog.csdnimg.cn/20190225171920688.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly93ZWl4aWFvLmJsb2cuY3Nkbi5uZXQ=,size_16,color_FFFFFF,t_70"></p>
<p><img width="714" height="620"alt="" src="https://img-blog.csdnimg.cn/20190225171834909.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly93ZWl4aWFvLmJsb2cuY3Nkbi5uZXQ=,size_16,color_FFFFFF,t_70"></p>
<p>3、启动项目 </p>
<p> 查找 & nbsp;application.properties 或者 & nbsp; application.yml</p>
<p> 我这里会看到以下输出:</p>
<prename="code"><code><ol><li><div><divdata-line-number="1"></div></div><div><div> <span>2019</span>/<span>02</span>/<span>25</span>-<span>16</span>:<span>25</span>:<span>46</span> [main] DEBUG org.springframework.boot.context.config.ConfigFileApplicationListener- Loaded config <span>file</span> <span>''file:/Users/aven/Documents/workspace/fams/fams/target/classes/application.properties''</span> (classpath:/application.properties)</div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <span>2019</span>/<span>02</span>/<span>25</span>-<span>16</span>:<span>25</span>:<span>46</span> [main] DEBUG org.springframework.boot.context.config.ConfigFileApplicationListener- Loaded config <span>file</span> <span>''file:/Users/aven/Documents/workspace/fams/fams/target/classes/application.yml''</span> (classpath:/application.yml)</div></div></li></ol></code><divonclick="hljs.signin (event)" data-title="登录后复制"></div></pre>
<p> 可以看到,从加载顺序上是:先 & nbsp;application.properties 后 & nbsp; application.yml。</p>
<p> 但是这里有一个坑,你接着会看到:</p>
<prename="code"><code><ol><li><div><divdata-line-number="1"></div></div><div><div> <span>2019</span>/<span>02</span>/<span>25</span>-<span>16</span>:<span>25</span>:<span>46</span> [main] DEBUG org.springframework.boot.context.config.ConfigFileApplicationListener- Skipped (empty) config <span>file</span> <span>''file:/Users/aven/Documents/workspace/fams/fams/target/classes/application.properties''</span> (classpath:/application.properties) <span>for</span> profile <span>default</span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <span>2019</span>/<span>02</span>/<span>25</span>-<span>16</span>:<span>25</span>:<span>46</span> [main] DEBUG org.springframework.boot.context.config.ConfigFileApplicationListener- Skipped (empty) config <span>file</span> <span>''file:/Users/aven/Documents/workspace/fams/fams/target/classes/application.yml''</span> (classpath:/application.yml) <span>for</span> profile <span>default</span></div></div></li></ol></code><divonclick="hljs.signin (event)" data-title="登录后复制"></div></pre>
<p>Skipped (empty) config file xxx for profile default</p>
<p> 我 E 文不好,这是 “跳过(空)配置文件 xxx” 的意思吧?</p>
<p> 我去对应的目录下看了,文件确实存在的,怎么说是空的呢?</p>
<p> 再往下找,往下看:</p>
<prename="code"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span>2019</span>/<span>02</span>/<span>25</span><span>-16</span>:<span>26</span>:<span>17</span> [main] DEBUG org.springframework.web.context.support.StandardServletEnvironment- Adding PropertySource <span>''applicationConfig: [classpath:/application.properties]''</span> <span>with</span> search precedence immediately lower than <span>''applicationConfigurationProperties''</span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <span>2019</span>/<span>02</span>/<span>25</span><span>-16</span>:<span>26</span>:<span>17</span> [main] DEBUG org.springframework.web.context.support.StandardServletEnvironment- Adding PropertySource <span>''applicationConfig: [classpath:/application.yml]''</span> <span>with</span> search precedence immediately lower than <span>''applicationConfig: [classpath:/application.properties]''</span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div> <span>2019</span>/<span>02</span>/<span>25</span><span>-16</span>:<span>26</span>:<span>17</span> [main] DEBUG org.springframework.web.context.support.StandardServletEnvironment- Removing PropertySource <span>''applicationConfigurationProperties''</span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div> <span>2019</span>/<span>02</span>/<span>25</span><span>-16</span>:<span>26</span>:<span>17</span> [main] DEBUG org.springframework.web.context.support.StandardServletEnvironment- Removing PropertySource <span>''defaultProperties''</span></div></div></li></ol></code><divonclick="hljs.signin (event)" data-title="登录后复制"></div></pre>
<p>Adding PropertySource ''applicationConfig: [classpath:/application.yml]'' with search precedence immediately lower than ''applicationConfig: [classpath:/application.properties]''</p>
<p><strong > 这是说 & nbsp;application.yml 的优先级低于 & nbsp;application.properties 吧?</strong></p>
<p> 到这里结果是不是很明确了呢?</p>
<p> 噢,对了,我的版本是:spring-boot-1.5.9.RELEASE</p>
<p> 有很多文章从代码里面分析,搞的我一看就头大;</p>
<p> 我这里只是简单的从日志输出来分析,</p>
<p> 如果你还不满意,可以根据日志输出提示的类,</p>
<p> 跟踪一下,看看代码上具体是怎么实现的!</p> </div>
关于在 spring boot 中的 application.yml 文件属性中分配系统属性和springboot中,在yml文件中配置属性的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于7.Spring Boot配置文件application.yml、IDEA开发spring boot应用时 application.yml 或 application.properties 自定义属性提示、Spring Boot 2 忽略在 application.yml 中设置的 HikariCP 属性、Spring Boot application.yml application.properties 优先级的相关信息,请在本站寻找。
本文标签: