ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Spring `MessageSourceAware` Java Bean 示例 > 原文: [https://howtodoinjava.com/spring-mvc/spring-messagesourceaware-java-bean-example/](https://howtodoinjava.com/spring-mvc/spring-messagesourceaware-java-bean-example/) 如果要将不同语言环境的 i18n 资源包访问到 Java 源代码中,则该 Java 类必须实现`MessageSourceAware`接口。 在实现`MessageSourceAware`接口之后,spring 上下文将通过类需要实现的`setMessageSource(MessageSource messageSource)` setter 方法自动将`MessageSource`引用注入到类中。 ## 如何在 Spring Bean 中访问`MessageSource` 如前所述,使您的 bean 类`MessageSourceAware`成为给定的方式。 ```java package com.howtodoinjava.demo.controller; import org.springframework.context.MessageSource; import org.springframework.context.MessageSourceAware; @Controller public class EmployeeController implements MessageSourceAware { private MessageSource messageSource; public void setMessageSource(MessageSource messageSource) { this.messageSource = messageSource; } public void readLocaleSpecificMessage() { String englishMessage = messageSource.getMessage("first.name", null, Locale.US); System.out.println("First name label in English : " + englishMessage); String chineseMessage = messageSource.getMessage("first.name", null, Locale.SIMPLIFIED_CHINESE); System.out.println("First name label in Chinese : " + chineseMessage); } } ``` 现在,Web 应用程序的“资源”文件夹中有两个属性文件。 (文件应在运行时位于类路径中)。 `messages_zh_CN.properties`和`messages_zh_CN.properties` ```java #messages_en_US.properties first.name=FirstName in English #messages_zh_CN.properties first.name=FirstName in Chinese ``` 现在测试我们是否能够加载特定于语言环境的属性。 ```java package springmvcexample; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.howtodoinjava.demo.controller.EmployeeController; public class TestSpringContext { @SuppressWarnings("resource") public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext( new String[] { "/spring-servlet.xml" }); EmployeeController controller = (EmployeeController) context.getBean(EmployeeController.class); controller.readLocaleSpecificMessage(); } } Output: First name label in English : FirstName in English First name label in Chinese : FirstName in Chinese ``` 显然,我们能够在 Java Bean 中以特定于语言环境的方式访问资源。 **祝您学习愉快!**