Получить сообщение в коде Java (весна 3)

#spring #spring-mvc #properties #annotations #messages

#весна #spring-mvc #свойства #аннотации #Сообщение

Вопрос:

 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"
        p:basename="messages" />
  

компонент и, очевидно, в моих файлах velocity я могу использовать #springMessage() для получения необходимого сообщения. Но что, если я хочу получить это сообщение в моем контроллере *.java? Есть ли какая-нибудь аннотация, которую я мог бы использовать подобным образом?

 @Annotation('message')
private String message;
  

Или мне нужно сделать это по-другому?

Спасибо

Комментарии:

1. Обязательно ли это быть интернационализированным, или у вас есть только один messages.properties файл?

2. На данный момент я получил только один файл messages.properties

Ответ №1:

Пока вам не нужна никакая интернационализация, вы можете использовать messages.properties файл с PropertyPlaceHolderConfigurer (см. документы) вместе с @Value аннотацией

В XML:

 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="locations" value="classpath:messages.properties"/>
</bean>
  

И в Java:

 @Value('message')
private String message;
  

Вам также понадобится <context:annotation-config/> , чтобы заставить это работать (см. документы)

Комментарии:

1. хорошо, это хорошее решение, но что, если мой файл messages.properties будет расти и расширяться? Как это работает? Хранится ли где-нибудь содержимое моего файла (и я думаю, что тогда это не будет хорошим решением) или в компоненте PropertyPlaceholderConfigurer я просто показываю, где искать текущие сообщения?

2. @Dawid: Какая разница, если оно растет? Аннотация ссылается только на одну запись в файле.