SpringBoot注入数据的方式是什么
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"SpringBoot注入数据的方式是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2026年11月03日SpringBoot注入数据的方式是什么
本篇内容介绍了"SpringBoot注入数据的方式是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
application.properties
boot.name=liqingfengboot.age=28boot.pswd=123456
@RunWith(SpringRunner.class)@SpringBootTestpublic class DemoApplicationTests { @Value("${boot.name}") private String name; @Value("${boot.pswd}") private Integer pswd; @Value("${boot.age}") private Integer age;}@Component@ConfigurationProperties(prefix = "boot")@Datapublic class User { private String name; private Integer age; private Integer pswd;}@Autowiredprivate Environment env;@RunWith(SpringRunner.class)@SpringBootTestpublic class DemoApplicationTests { @Autowired private Environment env; @Test public void contextLoads() { System.out.println("名字:" + env.getProperty("boot.name")+ "年龄:" + env.getProperty("boot.age") +"密码:" + env.getProperty("boot.pswd")); }} @Value("注入普通字符串") private String normal; //关于属性的KEY可以查看System类说明 @Value("#{systemProperties['java.version']}")//-->使用了SpEL表达式 private String systemPropertiesName; // 注入操作系统属性 @Value("#{T(java.lang.Math).random()*80}")//获取随机数 private double randomNumber; //注入表达式结果 @Value("#{1+2}") private double sum; //注入表达式结果 1+2的求和 @Value("classpath:os.yaml") private Resource resourceFile; // 注入文件资源 @Value("http://www.baidu.com") private Resource testUrl; // 注入URL资源 @Value("#{st.name}") private String studentName;#{...}和${...}的区别演示A.${…}的用法{}里面的内容必须符合SpEL表达式,通过@Value("${app.name}")可以获取属性文件中对应的值,但是如果属性文件中没有这个属性,则会报错。可以通过赋予默认值解决这个问题,如@Value("${app.name:胖先森}")// 如果属性文件没有app.name,则会报错// @Value("${app.name}")// private String name;// 使用app.name设置值,如果不存在则使用默认值@Value("${app.name:胖先森}")private String name;B.#{...}的用法// SpEL:调用字符串Hello World的concat方法@Value("#{'Hello World'.concat('!')}")private String helloWorld;// SpEL: 调用字符串的getBytes方法,然后调用length属性@Value("#{'Hello World'.bytes.length}")private String helloWorldbytes;C.#{...}和${...}混合使用${...}和#{...}可以混合使用,如下文代码执行顺序:通过${server.name}从属性文件中获取值并进行替换,然后就变成了 执行SpEL表达式{'server1,server2,server3'.split(',')}。// SpEL: 传入一个字符串,根据","切分后插入列表中, #{}和${}配置使用(注意单引号,注意不能反过来${}在外面,#{}在里面)@Value("#{'${server.name}'.split(',')}")private List servers;在上文中在#{}外面,${}在里面可以执行成功,那么反过来是否可以呢${}在外面,#{}在里面,如代码// SpEL: 注意不能反过来${}在外面,#{}在里面,这个会执行失败@Value("${#{'HelloWorld'.concat('_')}}")private List servers2;答案是不能。因为spring执行${}是时机要早于#{}。在本例中,Spring会尝试从属性中查找#{'HelloWorld'.concat('_')},那么肯定找到,由上文已知如果找不到,然后报错。所以${}在外面,#{}在里面是非法操作D.用法总结#{…} 用于执行SpEl表达式,并将内容赋值给属性${…} 主要用于加载外部属性文件中的值#{…} 和${…} 可以混合使用,但是必须#{}外面,${}在里面 ${random.value}、${random.int}、${random.long}${random.int(10)}、${random.int[1024,65536]}@Value获取值和@ConfigurationProperties获取值比较

关于数据校验的部分代码
@Component@ConfigurationProperties(prefix = "person")@Validatedpublic class Person { //lastName必须是邮箱格式 @Email private String lastName;"SpringBoot注入数据的方式是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
属性
文件
表达式
内容
字符
字符串
数据
反过来
混合
方式
上文
从属性
代码
方法
更多
知识
结果
资源
会报
从属
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
什么是科技互联网
深圳恒合互联网络科技有限公司
互联网巨头反垄断金融科技
互联网科技公司怎么样
致骋互联网科技
九亚互联网科技
宜安科技 互联网金融
华中科技大学互联网
百单互联网科技有限公司
互联网科技小额贷款
兼蜜互联网科技
互联网金融监管科技
哈尔滨新华互联网科技
云创客互联网科技公司
阿里巴巴算科技企业还是互联网
互联网经济与金融科技
移动互联网年度科技创新
中国互联网有什么科技
互联网科技职业技能培训学校
众联互联网络科技
广州万易互联网科技有限公司
互联网科技保险
亿账通互联网科技
唐信互联网科技 大连
阿里巴巴算科技企业还是互联网
河南住房之家互联网科技
互联网企业科技类企业如何做账
互联网安防科技感
本届互联网大会上的黑科技
互联网科技接地气