2015-04-22 2 views
1

у меня есть spring-boot:1.2.3 приложения и у меня 2 вопроса проверки:проверки загрузки Spring не работает для всех бобов

  • работает в @Path конечных точек, но не @Service или @Component классов
  • это Безразлично «т бросить или войти что-либо, если проверка не пройдена, он просто возвращает 400 без какой-либо дополнительной информации

это библиотека проверки, которые уже поставляются с spring-boot:1.2.3:

[INFO] | +- org.hibernate:hibernate-validator:jar:5.1.3.Final:compile 
[INFO] | | +- javax.validation:validation-api:jar:1.1.0.Final:compile 
[INFO] | +- org.glassfish.jersey.ext:jersey-bean-validation:jar:2.14:compile 

Это лесозаготовительные библиотеки, которые приходят с spring-boot-starter-log4j:

[INFO] +- org.springframework.boot:spring-boot-starter-log4j:jar:1.2.2.RELEASE:compile 
[INFO] | +- org.slf4j:slf4j-log4j12:jar:1.7.10:compile 
[INFO] | \- log4j:log4j:jar:1.2.17:compile 

Эта проверка работает, но не регистрирует или показать любой StackTrace:

@Component 
@Path("/validation-example") 
public class ValidationExampleResource { 

    @GET 
    @Path("/{positiveNumber}") 
    public int validationExample(@Min(0) @PathParam("positiveNumber") int positiveNumber) { 
     ... 
    } 
} 

Но проверка не работает здесь на всех:

@Service 
public class ValidationExampleServiceImpl implements ValidationExampleService { 

    @Override 
    public int validationExample(@Min(0) int positiveNumber) { 
     ... 
    } 
} 
+0

, к сожалению, нет. Если вы это выясните, сообщите нам об этом. Я предполагаю, что это сработает, если бы я использовал Spring MVC-контроллеры вместо классов JAX-RS Resource, но мне бы хотелось, чтобы это работало с обоими, конечно. – cahen

+0

Что странно, так это то, что я не могу заставить его работать с конечными точками Path. – user3748908

+0

. Какую версию трикотажа вы используете? – user3748908

ответ

0

Для подтверждения n для работы, вам необходимо добавить @Valid

@Component 
@Path("/validation-example") 
public class ValidationExampleResource { 

    @GET 
    @Path("/{positiveNumber}") 
    public int validationExample(@Valid @Min(0) @PathParam("positiveNumber") int positiveNumber) { 
     ... 
    } 
} 
+0

валидация уже работает для этого класса – cahen

+0

@cahen вот пример https://fbflex.wordpress.com/2014/06/02/spring-boot-recipe-reading-and-validating-lists-of-configuration- свойства / –

1

Попробуйте эту конфигурацию. В моем проекте это сработало! Весна загрузки: 1.5.9.RELEASE

@Slf4j 
@Service 
@Validated 
public class ValidationService { 

    @Validated(CreateGroup.class) 
    public void create(@Valid User user) { 
     log.info("验证服务业务的作用"); 
    } 

    public void basic(@NotNull(message = "名称不能为空") String name) { 

    } 

} 

Details

Смежные вопросы