簡體   English   中英

將Spring Boot從1.5.3升級到1.5.4且自定義驗證配置啟動失敗

[英]Spring Boot upgrade to 1.5.4 from 1.5.3 with custom validation config startup failed

當1.5.3運行良好時。 但是升級到1.5.4開始失敗...

異常:2017-06-19 22:41:13,400:ERROR org.springframework.beans.factory.support.DefaultSingletonBeanRegistry main(DefaultSingletonBeanRegistry.java:581)-銷毀名稱為'org.springframework.context.annotation.internalScheduledAnnotationProcessor的bean上的方法'引發異常java.lang.IllegalStateException:ApplicationEventMulticaster未初始化-在通過上下文多播事件之前調用“刷新”:org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@3a45c42a:啟動日期[Mon Jun 19 22:41:11 CST 2017]; 上下文層次結構的根位於org.springframework.context的org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:414)〜[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]。 support.ApplicationListenerDetector.postProcessBeforeDestruction(ApplicationListenerDetector.java:97)〜[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]位於org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java :253)〜[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:578)[spring-beans-4.3 .9.RELEASE.jar:4.3.9.RELEASE]在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:554)[spring-beans-4.3.9.RELEASE.jar:4.3.9 .RELEASE],位於org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListabl eBeanFactory.java:961)[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]位於org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:523)[spring-beans -4.3.9.RELEASE.jar:4.3.9.RELEASE],位於org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:968)[spring-beans-4.3.9.RELEASE.jar:4.3 .9.RELEASE]位於org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1030)[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]。 support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:556)[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]位於org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java: 122)[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)[ 在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)的spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] [spring-boot-1.5.4.RELEASE.jar:1.5。 4.RELEASE]在org.springframework.boot.SpringApplication.run(SpringApplication.java:303)[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]在org.springframework.boot.builder.SpringApplicationBuilder .run(SpringApplicationBuilder.java:134)[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] at bing.AuthorityApplication.main(AuthorityApplication.java:40)[classes / :?] 2017年6月-19 22:41:13,407:ERROR org.springframework.beans.factory.support.DefaultSingletonBeanRegistry main(DefaultSingletonBeanRegistry.java:581)-銷毀名稱為org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor的bean上的方法異常java.lang.IllegalStateException:未初始化ApplicationEventMulticaster-在通過上下文多播事件之前調用“刷新”:org.springframework.boot.context.embedded.Ann otationConfigEmbeddedWebApplicationContext @ 3a45c42a:啟動日期[2017年6月19日星期一12:41:11 CST]; 上下文層次結構的根位於org.springframework.context的org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:414)〜[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]。 support.ApplicationListenerDetector.postProcessBeforeDestruction(ApplicationListenerDetector.java:97)〜[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]位於org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java :253)〜[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:578)[spring-beans-4.3 .9.RELEASE.jar:4.3.9.RELEASE]在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:554)[spring-beans-4.3.9.RELEASE.jar:4.3.9 .RELEASE],位於org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListabl eBeanFactory.java:961)[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]位於org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:523)[spring-beans -4.3.9.RELEASE.jar:4.3.9.RELEASE],位於org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:968)[spring-beans-4.3.9.RELEASE.jar:4.3 .9.RELEASE]位於org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1030)[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]。 support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:556)[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]位於org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java: 122)[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)[ 在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)的spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] [spring-boot-1.5.4.RELEASE.jar:1.5。 4.RELEASE]在org.springframework.boot.SpringApplication.run(SpringApplication.java:303)[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]在org.springframework.boot.builder.SpringApplicationBuilder .run(SpringApplicationBuilder.java:134)[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] at bing.AuthorityApplication.main(AuthorityApplication.java:40)[classes / :?] 2017年6月-19 22:41:13,409:ERROR org.springframework.beans.factory.support.DefaultSingletonBeanRegistry main(DefaultSingletonBeanRegistry.java:581)-銷毀名稱為org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory的bean的方法.lang.IllegalStateException:ApplicationEventMulticaster未初始化-在通過上下文多播事件之前調用“刷新”:org.springframework.boot.context.embedded.AnnotationConfi gEmbeddedWebApplicationContext @ 3a45c42a:啟動日期[CST 2017年6月19日星期一:22:41:11]; 上下文層次結構的根位於org.springframework.context的org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:414)〜[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]。 support.ApplicationListenerDetector.postProcessBeforeDestruction(ApplicationListenerDetector.java:97)〜[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]位於org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java :253)〜[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:578)[spring-beans-4.3 .9.RELEASE.jar:4.3.9.RELEASE]在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:554)[spring-beans-4.3.9.RELEASE.jar:4.3.9 .RELEASE],位於org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListabl eBeanFactory.java:961)[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]位於org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:523)[spring-beans -4.3.9.RELEASE.jar:4.3.9.RELEASE],位於org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:968)[spring-beans-4.3.9.RELEASE.jar:4.3 .9.RELEASE]位於org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1030)[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]。 support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:556)[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]位於org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java: 122)[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)[ 在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)的spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] [spring-boot-1.5.4.RELEASE.jar:1.5。 4.RELEASE]在org.springframework.boot.SpringApplication.run(SpringApplication.java:303)[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]在org.springframework.boot.builder.SpringApplicationBuilder .run(SpringApplicationBuilder.java:134)[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] at bing.AuthorityApplication.main(AuthorityApplication.java:40)[classes / :?] 2017年6月-19 22:41:13,422:INFO org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer主(AutoConfigurationReportLoggingInitializer.java:101)-

啟動ApplicationContext時出錯。 要顯示自動配置報告,請在啟用“調試”的情況下重新運行您的應用程序。 2017-06-19 22:41:13,663:ERROR org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter主要(LoggingFailureAnalysisReporter.java:42)-

***************************申請無法開始


描述:

org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration中方法methodValidationPostProcessor的參數1需要找不到類型為'javax.validation.Validator'的bean。 -未加載'ValidationAutoConfiguration'中的Bean方法'defaultValidator',因為@ConditionalOnMissingBean(類型:javax.validation.Validator; SearchStrategy:全部)發現了Bean'mvcValidator'

行動:

考慮重新考慮上述條件或在您的配置中定義類型為“ javax.validation.Validator”的bean。

這是我的自定義驗證配置,與jsr303集成了消息源

@Configuration
public class ValidationMessageConfig {

    @Bean
    public LocalValidatorFactoryBean mvcValidator(MessageSource messageSource) {
        LocalValidatorFactoryBean factory = new LocalValidatorFactoryBean();
        factory.setValidationMessageSource(messageSource);
        return factory;
    }
}

不確定如何/為什么與1.5.3一起使用,但是應該通過從@Bean注釋的方法返回一個來Validator默認的Validator 像這樣重寫:

@Bean
public Validator mvcValidator(MessageSource messageSource) {
    LocalValidatorFactoryBean factory = new LocalValidatorFactoryBean();
    factory.setValidationMessageSource(messageSource);
    return factory;
}

我遇到了同樣的問題,並解決了該問題。 像這樣重寫您的配置。

@Configuration
public class ValidationMessageConfig extends WebMvcConfigurerAdapter {

    @Autowired
    private MessageSource messageSource;

    @Override
    public Validator getValidator() {
        LocalValidatorFactoryBean factory = new LocalValidatorFactoryBean();
        factory.setValidationMessageSource(messageSource);
        return factory;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM