Java SpringBean消息源不能同时位于ApplicationConfig和WebMvcConfig中

Java SpringBean消息源不能同时位于ApplicationConfig和WebMvcConfig中,java,spring,spring-mvc,Java,Spring,Spring Mvc,我需要将@BeanSpringTemplateEngine放在ApplicationConfig中,这样我就可以将它@Autowire到生成电子邮件的@Component中。(见和)。因此,@Bean(name=“messageSource”)也需要位于ApplicationConfig中。但是,我有一个WebMvcConfig扩展了WebMvcConfigurationSupport,方法@Override Validator getValidator()需要setValidationMess

我需要将@Bean
SpringTemplateEngine
放在
ApplicationConfig
中,这样我就可以将它@Autowire到生成电子邮件的@Component中。(见和)。因此,@Bean(name=“messageSource”)也需要位于
ApplicationConfig
中。但是,我有一个
WebMvcConfig
扩展了
WebMvcConfigurationSupport
,方法
@Override Validator getValidator()
需要
setValidationMessageSource
和messageSource()。但是,由于我将它移动到了
应用程序配置
,我不知道如何从
WebMvcConfig
获取它。我是从一开始的。也许这里有人可以给我指出一个有用的方向,而不是寻找一个全新的配置原型

应用程序配置的相关代码

@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;
}
}
@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中用于视图呈现,另一个在ApplicationConfig中用于处理电子邮件。我将电子邮件放在一个单独的文件中,并根据文档称之为setTemplateEngineMessageSource,而不是setMessageSource。

为什么不在您的WebMvcConfig中设置@Autowired MessageSource?我不确定是否可以在配置部分自动连接内容。事实上,我敢打赌是不行的。