Подтвердить что ты не робот

Spring: как заменить конструктор-arg аннотацией?

Возможный дубликат:
заменить < конструктор-arg > с Spring Аннотация

Я хотел бы заменить конфигурацию XML applicationContext аннотацией.

Как заменить простой bean аргументами конструктора, которые исправлены?

Пример:

<bean id="myBean" class="test.MyBean">
    <constructor-arg index="0" value="$MYDIR/myfile.xml"/>
    <constructor-arg index="1" value="$MYDIR/myfile.xsd"/>
</bean>

Я читаю некоторое объяснение в @Value, но я действительно не понимаю, как передать некоторые фиксированные значения...

Можно ли загрузить этот bean при развертывании веб-приложения?

Спасибо.

4b9b3361

Ответ 1

Я думаю, что вы за этим:

@Component
public class MyBean {
    private String xmlFile;
    private String xsdFile;

    @Autowired
    public MyBean(@Value("$MYDIR/myfile.xml") final String xmlFile,
            @Value("$MYDIR/myfile.xsd") final String xsdFile) {
        this.xmlFile = xmlFile;
        this.xsdFile = xsdFile;
    }

    //methods
}

Вы также можете захотеть, чтобы эти файлы настраивались с помощью свойств системы. Вы можете использовать аннотацию @Value для чтения системных свойств с помощью синтаксиса PropertyPlaceholderConfigurer и ${}.

Чтобы сделать это, вы можете использовать разные значения String в аннотации @Value:

@Value("${my.xml.file.property}")
@Value("${my.xsd.file.property}")

но вам также понадобятся эти свойства в ваших системных свойствах:

my.xml.file.property=$MYDIR/myfile.xml
my.xsd.file.property=$MYDIR/myfile.xsd