gpt4 book ai didi

java - 类型/类是否需要用 @Component 或 @Service 注释才能用 @Value 注释其属性

转载 作者:行者123 更新时间:2023-11-30 05:19:55 32 4
gpt4 key购买 nike

我们有以下代码,它对我们有用,我们可以通过 application.properties 设置可见的值

public enum Checker {
RED ("#FF0000"),
YELLOW ("#FFFF00");

private final String value;

@Value("${visible:true}")
private String visible;

private Checker(final String value) {
this.value = value;
}

public String getValue() {
if (visible) {
return value;
}
else {
return "#000000";
}
}
}

现在,为了更好地理解它,在进行值注入(inject)之前不是应该先初始化 Bean 吗?

最佳答案

答案是肯定的,但不完全是。正确的说法是,类实例需要是一个 spring bean,@Value 才能工作。添加@Component@Service使类由Spring托管bean,但还有其他方法如使用@Bean

一般情况下,Spring 通过使用 processor 更改或添加功能到声明的 bean 来工作,与 @Transactional 相同,@Value 只会如果它是一个bean,则生效,是的,你可以在任何类中注释任何方法,并且代码将编译,但spring将简单地不考虑它。

来自@Value documentation

Note that actual processing of the @Value annotation is performed by a BeanPostProcessor

关于java - 类型/类是否需要用 @Component 或 @Service 注释才能用 @Value 注释其属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59722812/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com