使用spring boot属性中的int值

63lcw9qa  于 2021-08-20  发布在  Java
关注(0)|答案(3)|浏览(400)

我在任何地方都没见过这样的问题,所以我想在这里问一下。我必须为一种对象类型创建几个示例,我必须从文件.properties中提供示例的数量。我尝试使用注解@value,但它总是给我
nullpointerexception
因为该值为空。比如我有
应用程序属性
在我的资源文件夹中。假设文件如下所示:
示例数=5。。。
我使用注解:

@Value("${instances.number}")
private static String lastIndex;

我想这样使用它:

psvm {
for(int i = 0; i < Integer.parseInt(lastIndex); i++) {
//creating an instance of object
 }
}

所以我无法解析它,因为它是空值。我应该如何正确获取instances.number值?
...

nle07wnf

nle07wnf1#

您可以删除static并尝试它

@Value("${instances.number}")
private String lastIndex;
ocebsuys

ocebsuys2#

这可能是因为spring不支持上的@value static 领域。
也许可以尝试以下方式:

@Component
public class PropertyClass {

    @Value("${lastIndex}")
    private integer lastIndex;

    private static Integer LAST_INDEX;

    @Value("${lastIndex}")
    public void setLastIndex(Integer lastIndex){
        PropertyClass.LAST_INDEX = lastIndex;
    }
}

资源:https://www.baeldung.com/spring-inject-static-field

ajsxfq5m

ajsxfq5m3#

若您想通过@value获得值,您应该至少注解@component类,然后它将在运行时赋值。

@Service
Public class Config{
@Autowried
 Environment env:

@Value("${instances.number}")
private String lastIndex;

public void test(){

System.out.println(env.getProperty("key"));
System.out.println(lastIndex)
}

如果您想避免上述问题,您可以使用

environment.getProperty("keyName")

相关问题