SpringBoot注入数据的方式是什么
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"SpringBoot注入数据的方式是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
网络安全管理制度名称药店
北京笑橙网络技术
服务器集群节点
上机位软件开发工程师
redis大数据量转移到数据库
工业控制网络技术发展趋势
疫情期间网络安全如何预防
手机有网络连接不上游戏服务器
软件开发的会议
抖音网络安全警告怎么回事
网络安全公司英文
网络安全方面发生的事情
厦门软件开发十年薪资待遇
网络安全50强企业
服务器c3管理
建立专业数据库工作方案
工业图控系统软件开发方案价格
数据库使用socket吗
kdb时序数据库
记算机网络技术毕业后好就业吗
台州金融软件开发公司
gs360数据库
沈阳最好的网络技术职业学校
哈工大网络安全中心
数据库未命名
铜陵在线教育平台软件开发
网络安全风险意识不足
深圳市互联网教育科技
银川网络安全学院网络安全培训
ps42k17连接服务器