spring boot @ConfigurationProperties用法解析_五年达尔文的博客-程序员秘密

技术标签: 随笔  

该注解主要是用来给bean的属性赋值,与@Value有异曲同工之妙,不过@Value只能赋值一个,而 @ConfigurationProperties可以一次性赋值多个。根据bean的属性名称跟配置文件里的名称一一对应映射。
例子1:我们可以直接在对应的bean上加 如
存在User类

@ConfigurationProperties("user")
public class User {
	public User() {
		// TODO Auto-generated constructor stub
		System.out.println("create a user");
	}

	private Long id;

	private String username;

	private String name;

	private Short age;

	private BigDecimal balance;

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getUsername() {
		return this.username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Short getAge() {
		return this.age;
	}

	public void setAge(Short age) {
		this.age = age;
	}

	public BigDecimal getBalance() {
		return this.balance;
	}

	public void setBalance(BigDecimal balance) {
		this.balance = balance;
	}

}

application.yml 增加如下配置

user: 
  name: whj
  id: 1222

启动类

@SpringBootApplication
@EnableEurekaClient
@Import(User.class)
public class MicroserviceSimpleConsumerMovieApplication {

	public static void main(String[] args) {
		SpringApplication.run(MicroserviceSimpleConsumerMovieApplication.class, args);
	}
}
@RestController
public class MovieController {

	@Autowired
	private User user;

	@GetMapping("/movie/{id}")
	public User findById(@PathVariable Long id) {
		System.out.println(user.getName());
		return user;
	}
}

执行http://localhost:7902/movie/1 打断点(记得换成你自己的ip)我们可以看到MovieController 下注入的user的id=1222 name=whj,
这里就可以看出@ConfigurationProperties(“user”)的作用了:
寻找配置文件application.yml user 节点下配置的值与bean对象中的属性名一一映射对应,并将配置的值set到与之名称对应的属性中去.

我们换一种写法不使用import注解来生产bean

标题

@SpringBootApplication
@EnableEurekaClient
// @Import(User.class)
public class MicroserviceSimpleConsumerMovieApplication {

	@Bean
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}

	@Bean
	public User user() {
		User user = new User();
		user.setName("wwwwwwwwwwwwwwwww");
		return user;
	}

	public static void main(String[] args) {
		SpringApplication.run(MicroserviceSimpleConsumerMovieApplication.class, args);
	}
}

这时候在执行对应的contorller方法 发现控制台还是打印whj,由此可以见在注入bean的时候 才会赋值配置文件的值,所以在spring容器生成bean时设置的属性值会被覆盖。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40648117/article/details/102811106

智能推荐

React之hooks_叫我黑莓大人的博客-程序员秘密

1. React Hook/Hooks是什么?(1). Hook是React 16.8.0版本增加的新特性/新语法(2). 可以让你在函数组件中使用 state 以及其他的 React 特性2. 三个常用的Hook(1). State Hook: React.useState()(2). Effect Hook: React.useEffect()(3). Ref Hook: React.useRef()3. State Hook(1). State Hook让函数组件也可.

Android有未接来电后处理(判断未接来电)_Myhu730的博客-程序员秘密

在Android的手机状态中没有未接来电的监听器,所以如果想当手机有未接来电后进行处理,这时候就需要自己对手机的状态判断是未接来电后再进行处理.实现思路 : 1,继承PhoneStateListener后,当手机的状态改变后将会触发onCallStateChanged.手机的状态分为CALL_STATE_RINGING(响铃中),CALL_STATE_IDLE(空闲),CALL_STATE

deepin系统中Qt5.12无法输入中文(无法切换中文输入法)解决办法_deepin自带输入法怎么调中文_只是个~小不点的博客-程序员秘密

昨天安装了过程deepin系统来进行QT开发,一切进展都还顺利,但是在输入中文时,怎么切换都无法输入,也就是无法切换中文输入法,输入法状态变为默认键盘别且切换输入法的任何操作都不起作用 。昨天头疼了一下午,都弄不得。 对于使用 fcitx 框架的中文输入法,需要手动编译 fcitx-qt5 生成中文输入法的库文件,qt里面没有配置,需要在qt的某些目录下配置好这些文件才行。 查资料看到很多人用git clone github下的下载fcitx-qt5.git,但是我的电脑不行

ubuntu内核编译与Kasan初探_water_likly的博客-程序员秘密

最近在复现一篇论文的时候发现linux内核的强大之处了,就简单的学习了下关于内核的一些知识,其中主要用到了Kasan这个检测UAF漏洞的工具(严格来说只能是内核编译插桩),本以为很简单,结果搞了好长时间,鉴于目前这方面资料很少,设置过程也缺乏,故将这个设置过程记录下来,以便交流(本文仅限学术交流,严谨转载)一 内核编译内核编译过程主要参考了《鸟哥的Linux私房菜》,以及https://w...

Simulink HDL Coder FPGA初级开发实践(一) LED呼吸灯_肆拾伍的博客-程序员秘密

前言: 本栏目除特别说明以外,均采用的黑金AX7103开发板,该开发板时钟频率为200M,并且是双端时钟,因此在每个项目中都有一段原语将双端时钟变成200MHz的单端时钟。文章仅作为学习记录,如有不足请在评论区指出,博主不会对各位的问题作出解答,请谅解。博主深知网络上关于HDL Coder的资料十分稀少,特别是中文资料几乎没有,并且官方给出的例子大多挺难不适合入门,因此将自己摸索的过程记录下来,希望给后人一些启发。文章目录1. Simulink 模型2. 生成HDL代码3. 管脚图4. simulin.

LQ0195 史丰收速算【程序填空】_海岛Blog的博客-程序员秘密

史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算!速算的核心基础是:1 位数乘以多位数的乘法。其中,乘以 7 是最复杂的,就以它为例。因为,1/7 是个循环小数:0.142857...,如果多位数超过 142857...,就要进 1。同理,2/7, 3/7, ... 6/7 也都是类似的循环小数,多位数超过 nn/7,就要进 nn。下面的程序模拟了史丰收速算法中乘以7的运算过程。

随便推点

r语言 col_R语言入门之折线图_weixin_39605840的博客-程序员秘密

折线图第一部分:概述 & 简单绘图 在R语言中可以使用基本绘图函数lines(x, y, type=)来绘制线条,这里参数x和y分别是数值型向量,代表着横坐标和纵坐标的数据,参数type=主要是用来控制线条的类型。 这里需要指出的是lines()函数本身不产生任何图形,通常情况下它只有在plot()函数后使用才会在图片上添加相关线条。#在R中分号(;)可以将两个命令连接成一行,...

windows 关闭不需要的数据库服务 禁止不用的web服务扩展的方法 图文_SuJFighting的博客-程序员秘密

操作说明一.主机默认装有的数据库有SQL Server 2005和MySQL,服务默认都是启用的,启用中对CPU的使用和内存的使用都很大,如果主机中不需要数据库或者不需要某一个数据库可以对其服务进行停止,方法如下:选择“SQL Server 2005服务”,分别右键将“SQL Server FullText Search(MSSQLSERVER)”和“SQL Server (MSSQLSE

铁威马F2-221开箱实测,私有云的正确打开方式_Noont的博客-程序员秘密

随着大数据时代的来临,信息数据量日趋增加,无论是个人、企业还是高校等,对数据存储空间的需求量都是特别大。小编认为数据的安全性存储最好的方法就是存储在服务器中,对于个人或是团队间的数据存储小编认为最好的就是NAS(网络存储器)。那么本期小编就来给大家开箱介绍下我们国产品牌“铁威马F2-221网络存储服务器”。【机器开箱】来看看附件产品,这里的NAS是不包括硬盘的,一共有:铁威马F2-221主机、西数红盘*2、安装指导、保修条款、网线、电源适配器、螺丝和螺丝刀。小编第一次拿到手的时候的感觉就是这远比我

租号服务器未响应,租号玩启动不了wegame_nelity的博客-程序员秘密

用win10通过wegame为什么启动不了游戏用win10通过wegame启动不了游戏是因为设置错误,重新设置即可。需要准备的工具:电脑,wegame软件。1、首先在左下角“开始”菜单,打开“命令提示符”。2、然后输入“netsh winsock reset”重置计算机网络。3、等待重置成功后需要重启电脑。4、还可以重新安装WeGame客户端尝试解决问题,首先百度搜索wegame下载。5、等待安装...

dc_shell的get_attr/get_reference/ref_name/full_name及以此实现查找mem_ref name和cell name_cy413026的博客-程序员秘密

目录1.概念介绍1.1get_attr(get_attribute)1.2 get_reference1.3ref_name和full_name2.实现查找mem1.概念介绍1.1get_attr(get_attribute)get_attribute - Micro-IP Inc.https://www.micro-ip.com/Synopsys(PT)/dictionary_180_17/get_attribute.html1.2 get_reference

Harbor仓库命令行登录报错Error response from daemon: Get /v2/: dial tcp xxx.xx.xx connect: connection refused_"v2/\": dial tcp"_发量旺盛的博客-程序员秘密

问题描述今天通过部门内部的devops平台跑流水线时,报错Error response from daemon: Gethttp://192.168.129.44:85/v2/: dial tcp 192.168.129.44:85: connect: connection refused刚开始以为是Harbor仓库挂了,于是通过UI界面去登录发现正常,随后通过命令行去机器上登录发现报错一样。产生的原因此种情况是因为Harbor仓库已满,或者部署该仓库的机器关键目录已满!解决方式查询该机器上与

推荐文章

热门文章

相关标签