Установка имени класса bean-компонента Spring с использованием выражения SpEL и PropertyPlaceHolderJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Установка имени класса bean-компонента Spring с использованием выражения SpEL и PropertyPlaceHolder

Сообщение Anonymous »

ОБНОВЛЕНО: сводка решений по состоянию на 9 декабря 2016 г.

Согласно ответу @altazar ниже, это теперь возможно начиная с весны. 4.2!

Сводка старых решений по состоянию на 29 марта 2012 г.

Как с этой даты Spring SpEL не мог выполнить внутри атрибута class .

Оригинальный вопрос:

Я пытаюсь реализовать динамический класс< Атрибут /code> для bean-компонента Spring, который в конечном итоге устанавливается с использованием комбинации свойства PropertyPlaceHolder и выражения SpEL. Цель состоит в том, чтобы выбрать рабочую или отладочную версию класса для создания экземпляра. Это не работает, и мне интересно, возможно ли этого добиться.

На данный момент у меня есть следующее:

Плоский файл свойств:

Код: Выделить всё

is.debug.mode=false
Конфигурация Spring XML:
Код Spring начальной загрузки:

Код: Выделить всё

    // Get basic ApplicationContext - DO NOT REFRESH
FileSystemXmlApplicationContext applicationContext = new
FileSystemXmlApplicationContext
(new String[] {pathSpringConfig}, false);

// Load properties
ResourceLoader resourceLoader = new DefaultResourceLoader ();
Resource resource = resourceLoader.getResource("file:" + pathProperties);
Properties properties = new Properties();
properties.load(resource.getInputStream());

// Link to ApplicationContext
PropertyPlaceholderConfigurer propertyConfigurer =
new PropertyPlaceholderConfigurer()   ;
propertyConfigurer.setProperties(properties) ;
applicationContext.addBeanFactoryPostProcessor(propertyConfigurer);

// Refresh - load beans
applicationContext.refresh();

// Done
Example example = (Example) applicationContext.getBean("example");
Сообщение об ошибке (для ясности удалено много пробелов):

Код: Выделить всё

Caused by: java.lang.ClassNotFoundException:
#{ true ? com.springtest.ExampleDebug : com.springtest.ExampleProd}
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
. . .
Как вы можете видеть по "" в сообщении свойство is.debug.mode успешно загружается и заменяется. Но что-то еще идет не так. Это моя последовательность начальной загрузки в Java? Или синтаксис SPeL в XML? Или другая проблема?

Кстати, я знаю о новой функции профилей 3.1, но я хотел бы сделать это через SPeL по ряду причин. Я использую контекст и пути на основе файловой системы — для этого у меня тоже есть причины.

Подробнее здесь: https://stackoverflow.com/questions/990 ... laceholder
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»