就是对这一行代码进行分析,初始化消息源
initMessageSource();
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
</dependencies>
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext(TestConfig.class);
MessageSource mes = applicationContext.getBean(MessageSource.class);
String zh=mes.getMessage("name",null,null, Locale.CHINA);
String en=mes.getMessage("name",null,null,Locale.ENGLISH);
System.out.println(zh);
System.out.println(en);
}
}
//扫描包 使得 使用@Component注解生效
@ComponentScan("com.dmg")
@Configuration
public class TestConfig {
//注意这个messageSource固定死的
@Bean(name = "messageSource")
public MessageSource getMessageSource(){
ResourceBundleMessageSource messageSource=new ResourceBundleMessageSource();
messageSource.setDefaultEncoding("utf-8");
//这里的名称要和配置文件的前缀一致
messageSource.addBasenames("message1");
return messageSource;
}
}
message1_en.properties
name=001
message1_zh.properties
name=002
![](https://img-blog.csdnimg.cn/img_convert/c32b5c56a3c5a8e764545a506d6b2dbf.png)
跟着箭头走
![](https://img-blog.csdnimg.cn/img_convert/3f36eb7caa9f39139ccf162215dd31a0.png)
![](https://img-blog.csdnimg.cn/img_convert/651ecc669854c5a12ab174f88f0e4142.png)
判断bean工厂是否存在,messageSource这个bean
如果存在,从bean工厂中获取对应的信息,赋值给messageSource
如果不存在,创建一个DelegatingMessageSource
并把dms赋值给messageSource
然后把messageSource注入到bean工厂中
![](https://img-blog.csdnimg.cn/img_convert/0e5ce38f16476465cc7d63be68c683d3.png)
![](https://img-blog.csdnimg.cn/img_convert/86639b65b3e9970c2a5bb640a000cce1.png)
这里判断bean工厂中是否存在messageSource,就是对下面的@Bean里面的messageSource是否一致,如果一致就存在,不一致,就创建默认的
![](https://img-blog.csdnimg.cn/img_convert/d88ad92679340ba694a6792a486a5e0d.png)
![](https://img-blog.csdnimg.cn/img_convert/548e55811390120b183283548b1347ff.png)