gpt4 book ai didi

java - Spring bean messageSouce不能同时在ApplicationConfig和WebMvcConfig中

转载 作者:行者123 更新时间:2023-12-01 12:36:13 24 4
gpt4 key购买 nike

我需要将 @Bean SpringTemplateEngine 放入 ApplicationConfig 中,以便我可以将其 @Autowire 到生成电子邮件的 @Component 中。 (参见Thymeleaf-Spring4 unable to autowire TemplateEngineRich HTML email in Spring with Thymeleaf)。因此 @Bean(name = "messageSource") 也需要位于 ApplicationConfig 中。但是,我有一个扩展了 WebMvcConfigurationSupport 的 WebMvcConfig,并且方法 @Override Validator getValidator() 需要使用 setValidationMessageSource消息源()。但是,由于我将其移至 ApplicationConfig,我不知道如何从 WebMvcConfig 获取它。我从 spring-mvc-quickstart-archetype 开始来自kolorobot 。也许这里有人可以为我指出一个有用的方向,而不是寻找一个全新的配置原型(prototype)。

ApplicationConfig的相关代码

@Configuration
@ComponentScan(basePackageClasses = Application.class, excludeFilters = @Filter ({Controller.class, Configuration.class}))
class ApplicationConfig {
*** Incomplete Example ***
@Bean(name = "messageSource")
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename(MESSAGE_SOURCE);
messageSource.setCacheSeconds(5);
return messageSource;
}

@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
Set<TemplateResolver> resolvers = new HashSet<TemplateResolver>();
resolvers.add(classLoaderTemplateResolver());
resolvers.add(mvcTemplateResolver());
templateEngine.setTemplateResolvers(resolvers);
templateEngine.setMessageSource(messageSource());
templateEngine.addDialect(new SpringSecurityDialect());
return templateEngine;
}
}

以及WebMvcConfig的相关代码

@Configuration
@ComponentScan(basePackageClasses = {Application.class}, includeFilters = @Filter (Controller.class), useDefaultFilters = false)
class WebMvcConfig extends WebMvcConfigurationSupport {
*** Incomplete Example ***
@Override
public Validator getValidator() {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.setValidationMessageSource(messageSource());
return validator;
}
}

问题似乎是我无法将 getValidator() 移至 ApplicationConfig(),因为它必须重写 WebMvcConfigurationSupport 方法。

最佳答案

我通过创建两个单独的 SpringTemplateEngine 配置来使其工作,一个在 MvcWebConfig 中用于 View 渲染,一个在 ApplicationConfig 中用于处理电子邮件。我将电子邮件放在一个单独的文件中,并根据文档调用 setTemplateEngineMessageSource 而不是 setMessageSource。

关于java - Spring bean messageSouce不能同时在ApplicationConfig和WebMvcConfig中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25559659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com