Использовать объект Spring XML для установки свойства в аннотированном файле? - PullRequest
1 голос
/ 15 января 2010

У меня есть класс Spring MVC Controller, которому требуется набор свойств из файла config.properties. Я думал, что, поскольку я уже использую этот файл конфигурации для установки некоторых свойств базы данных, я мог получить к нему доступ аналогичным образом, чтобы установить это свойство. Разница в том, что мой класс Controller аннотирован и не объявлен в XML-файле, поэтому я не могу установить свойство обычным способом. У меня есть мои config.properties, готовые для использования в моем XML-файле, так:

    <context:property-placeholder location="/WEB-INF/config.properties" />

Я хотел бы установить следующее свойство в своем классе контроллера из записи в этом файле свойств:

@Controller
public class SampleUploadController {

    private String audioFilePath;
    public String getAudioFilePath() {
        return audioFilePath;
    }
    // I want this set from the properties file I've declared in my 
    // XML file: e.g. ${props.audioFilePath}
    public void setAudioFilePath(String audioFilePath) {
        this.audioFilePath = audioFilePath;
    } 
}

Возможно ли это. Если нет, может кто-нибудь подсказать, как получить нужное мне свойство из файла конфигурации? Он находится в моем корне WEB-INF. Проблема в том, что у меня нет доступа к ServletContext на данный момент, чтобы получить ссылку на этот файл.

Ответы [ 2 ]

2 голосов
/ 15 января 2010

В Spring 3 вы можете использовать аннотацию @Value, например,

@Value("${props.audioFilePath}")
public void setAudioFilePath(String audioFilePath) {
    this.audioFilePath = audioFilePath;
} 
0 голосов
/ 09 августа 2013

Skaffman корректен, но имейте в виду, что свойства, загруженные для использования только, работают в своем собственном контексте. Например, если у вас есть родительский модуль контекста приложения, который загружает свойства, вы не можете использовать @Value в bean-компонентах, размещенных в контексте сервлета с этими свойствами ... они просто не видны.

...