如何在SpringBoot中捕获属性的numberformatexception?

ldioqlga  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(611)

我有以下财产:

@RequiredArgsConstructor
@SpringBootApplication
public class ConsoleApp implements CommandLineRunner {

    @Value("${numberOfDocs:10}")
    private int numberOfDocuments;

如果我的用户不顾所有的警告和说明,决定在application.properties中为此变量放置一个非整数值,是否有方法捕获numberformatexception?
我不能在这个变量上加一个try-catch块。那么我还有什么选择呢?

yuvru6vn

yuvru6vn1#

您还可以使用@value作为setter injection的参数:

@SpringBootApplication
public class ConsoleApp implements CommandLineRunner {

    private int numberOfDocuments;

    @Autowired
    public void setValues(@Value("${numberOfDocs:10}") String numberOfDocuments) {
        try this.numberOfDocuments=Integer.parseInt(numberOfDocuments);
        } catch(NumberFormatException e){
            this.numberOfDocuments=10;
        }
    }

}
kqqjbcuj

kqqjbcuj2#

您可以明确地创建一个自定义构造函数,将参数作为 String 你的自定义逻辑是:

@SpringBootApplication
public class ConsoleApp implements CommandLineRunner {

    @Value("${numberOfDocs:10}")
    private int numberOfDocuments;

    public ConsoleApp(@Value("${numberOfDocs:10}") String numberOfDocuments){
        try{
            this.numberOfDocuments=Integer.parseInt(numberOfDocuments);
        }catch(NumberFormatException e){
            this.numberOfDocuments=10;
        }
    }

}

请注意,我已经删除了Lombok山 @RequiredArgsConstructor 因为我使用了自定义构造函数。

相关问题