Printemps de démarrage de l'application et MessageSource

J'ai essayé de créer une démo de printemps de démarrage de l'app avec MessageSource, mais je ne pouvais pas comprendre ce qui est le problème. J'ai essayé de plusieurs façons:

  • MessageSourceAutoConfiguration
  • La création de mon propre bean dans un @fichier de configuration et permettra à l'autowiring il

Ci-dessous est la MessageSourceAutoConfiguration façon:

Je suis à l'aide de printemps-amorçage-starter-parent 1.5.7.COMMUNIQUÉ de.

Ma structure de dossier:

Printemps de démarrage de l'application et MessageSource

DemoApplication.java

@SpringBootApplication
public class DemoApplication
{
  public static void main(String[] args)
  {
    SpringApplication.run(DemoApplication.class, args);
  }
}

DemoController.java

@RestController
public class DemoController implements MessageSourceAware
{
  private MessageSource messageSource;

  @Override
  public void setMessageSource(MessageSource messageSource)
  {
    this.messageSource = messageSource;
  }

  @RequestMapping("demo")
  public String getLocalisedText()
  {
    return messageSource.getMessage("test", new Object[0], new Locale("el"));
  }
}

Application.yml

spring:
  messages:
    basename: messages

messages.propriétés

test=This is a demo app!

messages_el.propriétés

test=This is a greek demo app!

pom.xml

<groupId>com.example.i18n.demo</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>demo</name>
<description>Demo project for Spring Boot</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.7.RELEASE</version>
    <relativePath />
    <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-
    8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>      
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

Lors du démarrage du serveur, je peux voir que la configuration automatique fonctionne, mais impossible de trouver un haricot:

MessageSourceAutoConfiguration matched:
      - ResourceBundle found bundle URL [file:/C:/Users/{user}/Downloads/demo/demo/target/classes/messages.properties] (MessageSourceAutoConfiguration.ResourceBundleCondition)
      - @ConditionalOnMissingBean (types: org.springframework.context.MessageSource; SearchStrategy: current) did not find any beans (OnBeanCondition)

J'ai essayé aussi de déclarer explicitement mon propre grain, mais ne fonctionne pas.

Tout en invoquant le point de terminaison j'obtiens l'erreur suivante:

{
    "status": 500,
    "error": "Internal Server Error",
    "exception": "org.springframework.context.NoSuchMessageException",
    "message": "No message found under code 'test' for locale 'el'.",
    "path": "/demo"
}

Le plus proche, DONC, la question que j'ai trouvé est celui-ci (2 ans) au sujet d'un bug dans le ressort de laquelle a été fixé un couple de versions il y a:
Printemps De Démarrage MessageSourceAutoConfiguration

Petit détail, vous ne devriez pas avoir des espaces dans vos messages, des fichiers, entre le " = " et la traduction du message.
Où avez-vous mis votre messages.properties. Vous pouvez aussi supprimer le spring.messages.basename propriété qui est la valeur par défaut.

OriginalL'auteur nicolas | 2017-10-10