Spring - Comment accéder à MessageSource dans le bean (MessageSourceAware)
Dans le dernier tutoriel, vous pouvez obtenir lesMessageSource via ApplicationContext. Mais pour qu'un bean obtienne le MessageSource, vous devez implémenter l'interfaceMessageSourceAware.
Exemple
Une classeCustomerService, implémente l'interfaceMessageSourceAware, a une méthode setter pour définir la propriétéMessageSource.
Lors de l'initialisation du conteneur Spring, si une classe implémente l'interfaceMessageSourceAware, Spring injectera automatiquement le MessageSource dans la classe via la méthode setter desetMessageSource(MessageSource messageSource).
package com.example.customer.services; import java.util.Locale; import org.springframework.context.MessageSource; import org.springframework.context.MessageSourceAware; public class CustomerService implements MessageSourceAware { private MessageSource messageSource; public void setMessageSource(MessageSource messageSource) { this.messageSource = messageSource; } public void printMessage(){ String name = messageSource.getMessage("customer.name", new Object[] { 28, "http://www.example.com" }, Locale.US); System.out.println("Customer name (English) : " + name); String namechinese = messageSource.getMessage("customer.name", new Object[] { 28, "http://www.example.com" }, Locale.SIMPLIFIED_CHINESE); System.out.println("Customer name (Chinese) : " + namechinese); } }
Exécuter
package com.example.common; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { public static void main( String[] args ) { ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"locale.xml","Spring-Customer.xml"}); CustomerService cust = (CustomerService)context.getBean("customerService"); cust.printMessage(); } }
Tous les fichiers de propriétés et fichiers XML sont réutilisés à partir des derniersResourceBundleMessageSource tutorial.
Téléchargez-le -Spring-MessageSource-Example.zip