我有问题,或者可能我在Spring Boot中发现了一个错误。我目前不确定。我有一个具有以下依赖项的项目
我想在Thymeleaf模板中使用messageSource,因此在application.yml中设置以下内容:
spring: messages: basename: de/mycompany/messages/message
并在上述包中放置了message.properties和message_de.properties。但是替换没有用。因此,我调试了MessageSourceAutoConfiguration并发现@Conditional(ResourceBundleCondition.class)起作用了。它找到了我的资源并返回true。所以我打印调试报告,发现它说
MessageSourceAutoConfiguration - Bundle found for spring.messages.basename: de/mycompany/messages/message (MessageSourceAutoConfiguration.ResourceBundleCondition) - @ConditionalOnMissingBean (types: org.springframework.context.MessageSource; SearchStrategy: all) found the following [messageSource] (OnBeanCondition)
因此,已经定义了另一个messageSource Bean,但是我想知道它的来源。所以我进一步调查,发现以下日志输出:
AnnotationConfigEmbeddedWebApplicationContext : Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@60df7989]
实际上,它来自initMessageSource方法中的类AbstractApplicationContext(大约622行)。在那里检查名称为“ messageSource”的bean,如果找不到,则创建上述DelegatingMessageSource。
我想念什么吗?我是否需要做一些事情才能使MessageSourceAutoConfiguration在AbstractApplicationContext之类的东西之前发生?还是这真的是一个错误?
对于我自己,我可以通过将自己的messageSource创建为@Bean来解决此问题,但是使用AutoConfiguration会更加聪明:)
基督徒问候
原来这是一个错误,希望可以尽快解决,请在此处进行跟踪:
https://github.com/spring-cloud/spring-cloud- commons/issues/29