spring boot 手动value和自动注入配置的区别[五]
前言
前面两篇中,写道我们注入配置的方式,是通过是注解的方式完成,如下:
@ConfigurationProperties(prefix ="person")
这意味着:
我们写一个person类,我们就需要在配置中写下person的配置。
但是现在有一个这样的需要,有一个新的配置类,需要的是person中的age。
理论上呢,我们可以再写一遍age,但是这样又耦合了。那么这时候可以使用value的方式来配置。
那么可以这样解决:
@Component
public class Newperson {
@Value("${person.last-name}")
private String lastName;
@Override
public String toString() {
return "Newperson{" +
"lastName='" + lastName + '\'' +
", age=" + age +
'}';
}
@Value("${person.age}")
private Integer age;
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
我在一个新的newperson配置中引用了person的配置。
好的,那么这两种配置有什么区别:

第一个区别不用多说,第二个区别在于:
就是说value中只支持last-name,不支持lastName这种命名规则。
第三个区别在于value中可以写一些计算方式:
@Value("#{10*10}")
private Integer age;
第四个在于:
@Component
@Validated
@ConfigurationProperties(prefix ="person")
public class Person {
@Email
private String lastName;
通过自动配置的方式呢,你可以添加一些验证条件,如果不满足的话,那么会这样。

第五个在于:
不支持一些复杂的类型:如 Map<String, Object>。
spring boot 手动value和自动注入配置的区别[五]的更多相关文章
- spring boot 使用拦截器 无法注入 配置值 、bean问题
参考:https://www.cnblogs.com/SimonHu1993/p/8360701.html 一定要将 拦截器组件 交给spring容器进行管理,这样才能注入配置值,或者注入bean: ...
- 自定义的Spring Boot starter如何设置自动配置注解
本文首发于个人网站: 在Spring Boot实战之定制自己的starter一文最后提到,触发Spring Boot的配置过程有两种方法: spring.factories:由Spring Boot触 ...
- Spring Boot源码探索——自动配置的内部实现
前面写了两篇文章 <Spring Boot自动配置的魔法是怎么实现的>和 <Spring Boot起步依赖:定制starter>,分别分析了Spring Boot的自动配置和起 ...
- spring boot + druid + mybatis + atomikos 多数据源配置 并支持分布式事务
文章目录 一.综述 1.1 项目说明 1.2 项目结构 二.配置多数据源并支持分布式事务 2.1 导入基本依赖 2.2 在yml中配置多数据源信息 2.3 进行多数据源的配置 三.整合结果测试 3.1 ...
- Spring Boot 源码分析 数据源 + Mybatis 配置
公司今年开始使用 Spring Boot 开发,当然使用 Spring Boot 也是大势所趋,尤其是现在微服务的趋向,当然是选择基于Spring Boot 的 Spring Cloud.(所谓的 S ...
- 51. spring boot属性文件之多环境配置【从零开始学Spring Boot】
原本这个章节是要介绍<log4j多环境不同日志级别的控制的>但是没有这篇文章做基础的话,学习起来还是有点难度的,所以我们先一起了解下spring boot属性文件之多环境配置,当然文章中也 ...
- (16)Spring Boot使用Druid(编程注入)【从零开始学Spring Boot】
在上一节使用是配置文件的方式进行使用druid,这里在扩散下使用编程式进行使用Druid,在上一节我们新建了一个类:DruidConfiguration我在这个类进行编码: package com.k ...
- Spring Boot 系列(三)属性配置&自定义属性配置
在使用spring boot过程中,可以发现项目中只需要极少的配置就能完成相应的功能,这归功于spring boot中的模块化配置,在pom.xml中依赖的每个Starter都有默认配置,而这些默认配 ...
- 分布式事务、多数据源、分库分表中间件之spring boot基于Atomikos+XADataSource分布式事务配置(100%纯动态)
本文描述spring boot基于Atomikos+DruidXADataSource分布式事务配置(100%纯动态),也就是增加.减少数据源只需要修改application.properties文件 ...
- 让Spring Boot项目启动时可以根据自定义配置决定初始化哪些Bean
让Spring Boot项目启动时可以根据自定义配置决定初始化哪些Bean 问题描述 实现思路 思路一 [不符合要求] 思路二[满足要求] 思路三[未试验] 问题描述 目前我工作环境下,后端主要的框架 ...
随机推荐
- Java 客户信息管理软件 (面向对象 封装 总结)
1 package com.bytezero.cim.bean; 2 3 /** 4 * 5 * @Description Customer为实体对象,用来封装客户信息 6 * @author Byt ...
- 一文搞懂如何自己写一个Python库
一文搞懂如何自己写一个Python库 你是否曾想过为自己的Python项目编写一个库,以便在不同项目中重复使用代码? 并且能在PyPI仓库中发布,并通过pip install 库名来安装使用 编写Py ...
- redis同步锁的真实应用场景
一.问题由来 现在正在做的小程序后台中,有一个功能叫做高光时刻,在操作高光时刻的时候,可能会有多个用户来同时想操作这个功能,可是在同一时间只能 有一个用户能够操作.刚开始做的时候,自己的做法是在red ...
- obs 录制教程 手机录屏用 向日葵 手机投屏 能用有线用有线的连接
obs 录制教程 手机录屏用 向日葵 手机投屏 稍微有点卡 华为手机有个投屏 笔记本不支持这个 miracast 淘宝有卖 投屏设备的,搜 miracast 100多米 免费的就用向日葵就得了. 最新 ...
- 海词 dict.cn 有 词义饼状分布图 和 词性饼状分布图 - 词典推荐
海词 dict.cn 有 词义饼状分布图 和 词性饼状分布图 http://dict.cn/like
- 【stars-one】JetBrains产品试用重置工具
原文[stars-one]JetBrains产品试用重置工具 | Stars-One的杂货小窝 一款可重置JetBrains全家桶产品的试用时间的小工具,与其全网去找激活码,还不如每个月自己手动重置试 ...
- 文心一言 VS 讯飞星火 VS chatgpt (216)-- 算法导论16.2 3题
三.假定在 0-1 背包问题中,商品的重量递增序与价值递减序完全一样.设计一个高效算法求此背包问题的变形的最优解,证明你的算法是正确的.如果要写代码,请用go语言. 文心一言: 在0-1背包问题中,如 ...
- 记录--你还在使用websocket实现实时消息推送吗?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 在日常的开发中,我们经常能碰见服务端需要主动推送给客户端数据的业务场景,比如数据大屏的实时数据,比如消息中心的未读消息,比如聊天功能 ...
- 面试官:只知道v-model是:modelValue和@onUpdate语法糖,那你可以走了
前言 我们每天都在用v-model,并且大家都知道在vue3中v-model是:modelValue和@update:modelValue的语法糖.那你知道v-model指令是如何变成组件上的mode ...
- SpringBoot RestTemplate 上传文件
@Test public void testUpload() throws Exception { String url = "http://127.0.0.1/file/upload&qu ...