API проверки javax не работает для проверки pojo - PullRequest
0 голосов
/ 29 мая 2020

У меня есть класс POJO, в котором переменные класса вводятся аннотацией @Value. Я пытаюсь проверить свои переменные класса, используя api проверки javax, поэтому я пробовал @NotNull, @NotEmpty и @NotBlank, но все они, похоже, не проверяют или не генерируют какие-либо исключения, даже если пустой / ноль значение присутствует в файле application.yml. Любая идея относительно того, как я могу проверить свой POJO здесь, используя api проверки javax? PS: Я использую lombok для создания своего геттера / сеттера.

Ниже мой пример кода!

Класс POJO:

@Component
@Getter
@Setter
public class Credentials {

    @NotBlank
    @Value("${app.username}")
    private String user_name;

    @NotBlank
    @Value("${app.password}")
    private String password;

}

Ниже это файл application.yml:

app:
    username: '#{null}'
    password: passWord

Даже если я укажу пустое значение, я не получу никаких исключений, когда попытаюсь вывести эти значения в консоль.

Ответы [ 2 ]

1 голос
/ 30 мая 2020

Думаю, это можно применить.

@Data
@RequiredArgsConstructor
public class Credentials {

    private final String user_name;

    private final String password;

}

@Configuration
@Validated
public class CredentialsConfiguration {

    @Bean
    public Credentials credentials(
        @NotBlank @Value("${app.username}") final String user_name,
        @NotBlank @Value("${app.password}") final String password) {

        return new Credentials(user_name, password);

    }
}
1 голос
/ 29 мая 2020

Проверка будет работать только для @ConfigurationProperties аннотированных классов в сочетании с использованием @EnableConfigurationProperties.

Причина, по которой вы не получаете исключения, заключается в том, что @Value только проверяет наличие атрибута в свойствах , его не волнует значение этого атрибута, если только вы не назначаете неверно совпадающее значение типа данных.

...