Spring - Zugriff auf MessageSource in Bean (MessageSourceAware)

Spring - So greifen Sie in Bean auf MessageSource zu (MessageSourceAware)

Im letzten Tutorial können Sie dieMessageSource via ApplicationContext erhalten. Damit eine Bean die MessageSource erhält, müssen Sie dieMessageSourceAware-Schnittstelle implementieren.

Beispiel

EineCustomerService-Klasse, die dieMessageSourceAware-Schnittstelle implementiert, verfügt über eine Setter-Methode zum Festlegen derMessageSource-Eigenschaft.

Wenn während der Spring-Container-Initialisierung eine Klasse die SchnittstelleMessageSourceAwareimplementiert, fügt Spring die MessageSource automatisch über die Setter-MethodesetMessageSource(MessageSource messageSource)in die Klasse ein.

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);
    }

}

Starte es

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();
    }
}

Alle Eigenschaftendateien und XML-Dateien werden aus den letztenResourceBundleMessageSource tutorial wiederverwendet.

Laden Sie es herunter -Spring-MessageSource-Example.zip