Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
弹簧靴;我们可以在Java枚举中使用@Value吗_Java_Spring_Spring Boot_Enums - Fatal编程技术网

弹簧靴;我们可以在Java枚举中使用@Value吗

弹簧靴;我们可以在Java枚举中使用@Value吗,java,spring,spring-boot,enums,Java,Spring,Spring Boot,Enums,是否可以在枚举类中使用@Value(${myapp.token.key}) 在枚举类中使用@Configuration或@ConfigurationProperties是一种好做法吗 --这是可能的,但这并不容易,也绝对不是一个好主意。更喜欢实现相当于功能的接口的服务。不,不是。枚举的目的是为我们提供范围有限的映射数据(固定值集)。如果我们想在Java枚举中使用@Value,那么它首先会取消枚举的用途 @Configuration也是如此,当我们想在Spring的容器中注入实例时,我们会这样做。

是否可以在枚举类中使用@Value(${myapp.token.key})

在枚举类中使用@Configuration或@ConfigurationProperties是一种好做法吗


--这是可能的,但这并不容易,也绝对不是一个好主意。更喜欢实现相当于
功能的接口的服务。

不,不是。枚举的目的是为我们提供范围有限的映射数据(固定值集)。如果我们想在Java枚举中使用
@Value
,那么它首先会取消枚举的用途

@Configuration
也是如此,当我们想在Spring的容器中注入实例时,我们会这样做。这对枚举没有任何意义


如果您发布了尝试这样做的实际原因,我们可能会为您指出正确的方向/解决方案。

您可以创建一个带有静态字段和默认值的类,如下面的

class EnumLikeClass {
  @Value("${myapp.token.key:Default value}")
  public static String key;
}
现在你可以打电话了

EnumLikeClass.key

谢谢你,亚历山德拉。是的,这是有意义的,因此我提出了我的问题,因为我对这种方法有疑问。要提供更多详细信息:例如:我必须调用2个服务-订单和库存,我有一个包含订单和库存的枚举。另外,在枚举中包含需要从spring引导资源属性文件读取的相应URL。嘿@codegeek,听起来你不需要枚举。尝试使用
@ConfigurationProperties
在容器中注入属性类。然后使用它访问您的环境变量(URL)。祝你好运。你的
@ConfigurationProperties
可以定义一个
映射
。谢谢@chrylis谨慎的光学-还有crabby,我试图使用MyEnum.url,就像我还有其他运行时类类型一样,但我得到了我需要的。不,你不能!您不能将@value直接注入静态字段,否则将无法工作!