Могу ли я заменить определение компонента Spring во время выполнения?

Рассмотрим следующий сценарий. У меня есть контекст приложения Spring с bean-компонентом, свойства которого следует настраивать, например DataSource или MailSender . Изменяемая конфигурация приложения управляется отдельным bean-компонентом, пусть ' s назовите это конфигурацией .

Теперь администратор может изменить значения конфигурации, такие как адрес электронной почты или URL базы данных, и я хотел бы повторно инициализировать настроенный bean-компонент во время выполнения.

Предположим, что я нельзя просто изменить свойство конфигурируемого bean-компонента (например, созданного с помощью FactoryBean или внедрения конструктора), но необходимо воссоздать сам bean-компонент.

Есть мысли о том, как этого добиться? Я был бы рад получить совет, как организовать всю настройку. Ничего не исправлено. : -)

РЕДАКТИРОВАТЬ

Чтобы немного прояснить ситуацию: я не спрашиваю, как обновить конфигурацию или как ввести статические значения конфигурации. Я попробую пример:


    
        
    

    
        
    

    
        
    

Итак, есть компонент constructorInjectedBean , который использует внедрение конструктора. Поэтому я попробовал следующее в /Configuration/TypoScript/setup.txt: plugin.myextension ....

Я расширил таблицу страниц и теперь хочу использовать некоторые данные в объекте домена под названием «Теги ".
Итак, я попробовал следующее в /Configuration/TypoScript/setup.txt :

plugin.myextension.persistence.classes.Tx_myextension_Domain_Model_Tag {
    mapping {
        tableName = pages
        recordType = Tx_myextension_Domain_Model_Tag
        columns {
            tx_myextension_tag_name.mapOnProperty = name
            uid.mapOnProperty = id
        }
    }
}

Но похоже, что расширение пытается получить доступ к таблице Tx_myextension_Domain_Model_Tag (которой не существует)

Это Я получаю ошибку:

Tx_Extbase_Persistence_Storage_Exception_SqlError`

Таблица 'tx_myextension_domain_model_tag' не существует: SELECT tx_myextension_domain_model_tag. * FROM tx_myextension_domain_model_tag. * FROM tx_myextension_domain_model_tag. * FROM tx_myextension_domain_model_tag. 121 --- 1853032-

Итератор .NET для обертывания API бросания У меня есть класс с API, который позволяет мне запрашивать объекты, пока он не вызовет исключение IndexOutOfBoundsException. Я хочу обернуть его итератором, чтобы можно было писать более чистый код. Однако мне нужно ...

У меня есть класс с API, который позволяет мне запрашивать объекты до тех пор, пока он не выдаст исключение IndexOutOfBoundsException .

Я хочу поместить его в итератор, чтобы иметь возможность писать более чистый код. Однако мне нужно перехватить исключение, чтобы остановить итерацию:

static IEnumerable Iterator( ExAPI api ) {
    try {
       for( int i = 0; true; ++i ) {
          yield return api[i]; // will throw eventually
       }
    } 
    catch( IndexOutOfBoundsException ) {
       // expected: end of iteration.
    }
}

Но ...

При использовании с выражением yield оператор возврата не может появляться в блок catch или в блоке try, который имеет один или несколько пунктов catch. Для большего информацию см. в разделе Обработка исключений Заявления (Справочник по C #). Заявления (Справочник по C #). (из msdn )

Как еще можно обернуть этот api?

7
задан xtofl 28 October 2010 в 13:04
поделиться