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 问题描述 实现思路 思路一 [不符合要求] 思路二[满足要求] 思路三[未试验] 问题描述 目前我工作环境下,后端主要的框架 ...
随机推荐
- Dubbo基本见解
1.dubbo主要角色 Provider: 暴露服务的服务提供方. Consumer: 调用远程服务的服务消费方. a.订阅注册中心,注册中心广播服务变更,第一次会主动全量pull所有信息,后面增量会 ...
- hutool,真香!
前言 今天给大家介绍一个能够帮助大家提升开发效率的开源工具包:hutool. Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式 ...
- Zabbix“专家坐诊”第182期问答汇总
问题一: Q:像烽火.浪潮这种没有ilo的设备怎么监控他们的硬件状态呢? A:如果没有ilo,可以使用其他硬件监控软件,例如HP Insight Manager.IBM Director.Dell O ...
- ida使用入门指北
静态分析 快捷键 操作 作用 空格键 在反汇编窗口中,进行列表视图与图形视图之间的切换 TAB 在反汇编窗口中,进行汇编指令与伪代码之间的切换 Esc 和 Ctrl+Enter 翻页,返回前一页面 G ...
- 逆向通达信Level-2 续三 (KTL python控制台动态调试)
python控制台逆向分析. python 跟 js 自如切换 逆向通达信Level-2 续十一 (无帐号登陆itrend研究版) 逆向通达信Level-2 续十 (trace脱壳) 逆向通达信Lev ...
- 关于api的表优化及代码优化小结
提示:近期有空整理下mysql设计注意点吧 文章目录 一.表设计方面 二.代码设计方面 总结 一.表设计方面 建表要求三范式 5个必须字段is_del,create_time(CURRENT_TIME ...
- 寒武纪加速平台(MLU200系列) 摸鱼指南(三)--- 模型移植-分割网络实例
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- [https://atcoder.jp/contests/abc234/tasks/abc234_d Prefix K-th Max] 最小堆实现
Problem Statement Given are a permutation P=(P_1,P_2,\ldots,P_N)P=(P1,P2,-,PN) of (1,2,\ldots,N)( ...
- 3DCAT亮相WAIC 2022浦东分会场——元宇宙博览会暨数字光影大会
以"智联世界 元生无界"为主题的2022世界人工智能大会于9月3日下午圆满闭幕.与此同时,由上海市多媒体行业协会.深圳市数字创意与多媒体行业协会主办,上海天盛会展有限公司承办的WA ...
- KingbaseES V8R6 空闲事务会话超时自动终止机制
背景 如果会话在事务中停留的时间过长,则允许自动终止空闲会话.可以由配置参数idle_in_transaction_session_timeout 事务处于空闲状态的时长,它有助于防止被遗忘的交易事务 ...