spring @Value如何为变量java赋值[关闭]
Posted
技术标签:
【中文标题】spring @Value如何为变量java赋值[关闭]【英文标题】:How spring @Value assign value to variable java [closed] 【发布时间】:2022-01-20 16:20:00 【问题描述】:@Value 注解在 spring 内部是如何工作的。
实际上我想通过提供逻辑并再次为变量字段赋值来使用自定义注释来实现相同的功能。
春天来了
@Value($key)
private String name;
但我想要
@CustomAnnotation
private String name;
这里@CustomAnnotation
将读取值并对名称变量执行一些逻辑并分配回名称变量。
感谢您的帮助!!!!
【问题讨论】:
"@Value 注解在 spring 内部是如何工作的。" - 如果没有在源代码中查找它,我会怀疑某个地方有一个类,正在扫描所有类注解@Value
的类路径,然后将请求的值分配给该字段。
我怀疑春季是否有支持 - 不过我很高兴被证明是错误的。然而,这里没有什么神奇的。检查要在 (Class.getDeclaredFields) 上使用此注释的类的字段以获取注释 (Field.getAnnotation) 并设置字段的值 (Field.setValue)。可能您需要使该字段可访问(Field.setAccessible)。这需要在类的实例在某处使用之前完成。这实际上可能是棘手的部分。
我尝试了同样的方法,但问题是我们在变量上声明注释并且 Class.getDeclaredFields 返回所有字段的数组而不是当前带注释的字段名称。
您必须循环进入字段列表并获取要处理的注释的名称。 keyholesoftware.com/2014/09/15/…
正确,但我不想这样做。我只想要自定义带注释的字段名称,而不是全部阅读。
【参考方案1】:
您不需要为此创建自定义注释,您可以在@Value
注释中使用 SPEL(Spring 表达式语言)。
例如
@Value("# $key=='blah' ? 'Foo' : 'Bar' ")
private String name;
有关 SPEL 的更多信息,请查看this。
【讨论】:
以上是关于spring @Value如何为变量java赋值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章