1. @Value("${...}") – 配置参数值注入
@Value("1")- 注入值 1
@Value("${server.error.path}")- 注入配置参数
server.error.path的值 - 如果配置参数
server.error.path未定义则注入失败,抛出异常IllegalArgumentExceptionjava.lang.IllegalArgumentException: Could not resolve placeholder 'server.error.path' in value "${server.error.path}"
- 注入配置参数
@Value("${server.error.path:${error.path:/error}}")- 注入配置参数
server.error.path的值 - 如果配置参数
server.error.path未定义,注入配置参数error.path的值 - 如果配置参数
server.error.path和error.path都未定义,则使用值/error
- 注入配置参数
2. @Value("#{...}") – SPEL表达式求值注入
@Value("#{1}")- 注入值
1
- 注入值
@Value("#{student.name}")- 注入
beanstudent属性name的值 - 如果
student不存在或者其属性name不存在,则抛出异常SpelEvaluationExceptionorg.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'student' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public or not valid?
- 注入
@Value("#{student.name ?: '张三'}")- 注入
beanstudent的属性name的值 - 如果
student存在并且有属性name,但属性值为null,则注入值"张三"
- 注入
@Value("#{systemProperties['mongodb.port'] ?: 27017}")- 注入系统属性
mongodb.port的值 - 如果系统属性
mongodb.port未设定,则注入值27017
- 注入系统属性
3. @Value("${...}") 和 @Value("#{...}") 混用
@Value("#{'${db.host:127.0.0.1}'}")- 注入配置参数
db.host - 如果配置参数
db.host未设置,注入值127.0.0.1
- 注入配置参数
本文详细介绍了Spring框架中@Value注解的使用方法,包括基本的配置参数值注入、SPEL表达式求值注入以及两者的混合使用。通过具体示例展示了如何处理配置参数缺失的情况,并提供了解决方案。
645

被折叠的 条评论
为什么被折叠?



