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

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

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

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

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

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

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


    
        
    

    
        
    

    
        
    

Итак, есть компонент constructorInjectedBean , который использует внедрение конструктора. Представьте, что создание bean-компонента очень дорого, поэтому использование области видимости прототипа или фабричного прокси не вариант, подумайте DataSource . Итак, я попробовал следующее в /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. * FROM tx_myextension_domain_model_tag. 121 --- 1853032-

Автоматическое тестирование кода CSS и HTML для внешнего интерфейса Я внешний разработчик, кодирующий CSS, HTML и Javascript (в указанном порядке), и большая часть моей работы - это дизайн -вести. Хотя качество дизайнов, которые я создаю с помощью CSS, субъективно, большая часть ...

Я ' Я фронтенд-разработчик, кодирующий CSS, HTML и Javascript (в указанном порядке), и большая часть работы, которую я делаю, - это ведущий дизайнер. Хотя качество дизайнов , которые я создаю с помощью CSS, является субъективным, большая часть кода является чисто функциональной / макетной, и я заинтересован в любом способе автоматизации тестирования моей страницы.

Мой вопрос может быть следующим. разделить на две части

  1. Есть ли у кого-нибудь существующие методы или предложения для автоматическое тестирование CSS или HTML, особенно в отношении кроссбраузерность?

  2. Поскольку CSS можно грубо разделить в свойства, управляющие макетом а те, что контролируют дизайн, автоматическое тестирование возможно только для макет (невозможно автоматически и качественно проверить, что цвет правильный, например)? Если да, то вид значений CSS может быть подходящим для логических приемочных тестов?

Вот мои первые примеры логических значений макета, которые можно было бы протестировать - должны быть другие?

  • Появляется ли всплывающее окно над другим содержимым (z-index)
  • Убирает ли нижний колонтитул все остальное содержимое (плавающее)

Спасибо за вашу помощь. Третья часть вопроса, конечно же, «Не трачу ли я свое время на этот путь?».

***** edit *****

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

http://www.morethanseven.net/2008/10/13/unit-testing-css-looking-solution/

Двигаясь вперед, я пытаюсь выделить несколько примеров из моей работы, где только CSS вызывает функциональную ошибки, однако те, которые я обнаружил до сих пор, - это ошибки с объединенными JS и CSS. com.microsoft.sqlserver.jdbc_SQLServerException: не удалось создать XA ...

Когда я пытаюсь выполнить транзакцию XA, в моем журнале появляется следующее исключение:

javax.transaction.xa.XAException: com .microsoft.sqlserver.jdbc_SQLServerException: не удалось создать управляющее соединение XA. Ошибка: «В разрешении EXECUTE было отказано в объекте 'xp_sqljdbc_xa_init_ex', база данных 'master', схема 'dbo'

Я следил за этими руководствами Общие сведения о транзакциях XA и Как сделать источник данных XA MSSL Server Работа? не удалось создать управляющее соединение XA. Ошибка: «В разрешении EXECUTE было отказано в объекте 'xp_sqljdbc_xa_init_ex', база данных 'master', схема 'dbo'

Я следил за этими руководствами Общие сведения о транзакциях XA и Как сделать источник данных XA MSSL Server Работа? не удалось создать управляющее соединение XA. Ошибка: «В разрешении EXECUTE было отказано в объекте 'xp_sqljdbc_xa_init_ex', база данных 'master', схема 'dbo'

Я следил за этими руководствами Общие сведения о транзакциях XA и Как сделать источник данных XA MSSL Server Работа? После выполнения первого руководства я также выполнил следующую команду в SSMS:

use master GO
EXEC sp_addrolemember [SqlJDBCXAUser], 'MyUserName' GO

Я также добавлю, что я выполнил

и использовал мастер GO EXEC sp_grantdbaccess 'MyUserName', 'MyUserName' GO

, чтобы убедиться, что пользователь имеет доступ к мастеру db, и я получил ошибку, что «пользователь уже существует в текущей базе данных». Наконец, я проверил через SSMS, что для роли SqlJDBCXAUser действительно предоставлен EXECUTE в отношении xp_sqljdbc_xa_init_ex .
Я использую БД, очевидно, не master , а myDBName . Единственная корреляция между ними в отношении этой проблемы заключается в том, что MyUserName является владельцем myDBName и существует как пользователь в master .
Мой сервер работает на Windows XP SP3 (так что исправление, упомянутое в первом руководстве, не актуально, поскольку оно предназначено для XP SP2 и ниже, я знаю, поскольку пытался запустить исправление).

Кто-нибудь сталкивался с этой проблемой? Буду очень признателен за несколько потенциальных клиентов.
Спасибо,
Ittai

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

Выполните сценарий базы данных xa_install.sql на каждом экземпляре SQL Server, который будет участвовать в распределенных транзакциях. Этот сценарий устанавливает расширенные хранимые процедуры, которые вызываются sqljdbc_xa.dll. Эти расширенные хранимые процедуры реализуют распределенную транзакцию и поддержку XA для драйвера JDBC Microsoft SQL Server. Вам нужно будет запустить этот сценарий от имени администратора экземпляра SQL Server.

Когда они говорят экземпляр SQL Server , имеют ли они в виду сервер sql, который содержит несколько баз данных, включая master ] и myDBName (I ' м использовали термины оракула, которые немного отличаются)? Я запустил сценарий xa_install.sql один раз в том виде, в каком он был предоставлен, и в нем указано use master .

Это второй абзац:

Настройка ролей, определяемых пользователем
Чтобы предоставить конкретному пользователю разрешения на участие в распределенных транзакциях с драйвером JDBC, добавьте пользователя в роль SqlJDBCXAUser. Например, используйте следующий код Transact-SQL, чтобы добавить пользователя с именем «shelby» (стандартный пользователь SQL с именем «shelby») к роли SqlJDBCXAUser:

USE master  
GO  
EXEC sp_grantdbaccess 'shelby', 'shelby'  
GO  
EXEC sp_addrolemember [SqlJDBCXAUser], 'shelby'  

Пользовательские роли SQL определены для каждой базы данных . Чтобы создать свою собственную роль в целях безопасности, вам нужно будет определить роль в каждой базе данных и добавить пользователей для каждой базы данных. Роль SqlJDBCXAUser строго определена в базе данных master , поскольку она используется для предоставления доступа к расширенным хранимым процедурам SQL JDBC, которые находятся в главной базе данных. Вы должны сначала предоставить отдельным пользователям доступ к мастеру, а затем предоставить им доступ к роли SqlJDBCXAUser, пока вы вошли в базу данных master.

Я не уверен, но думаю, что в приведенном выше предложении, выделенном жирным шрифтом, говорится, что SqlJDBCXAUser роль должна быть определена только на master , а другим пользователям, имеющим доступ к myDBName , должен быть предоставлен доступ к master , а затем добавлен к роли и это каким-то образом (не знаю как) позволит им при использовании базы данных myDBName использовать пакеты xa.

Обновление 2: Это снимок экрана из SSMS с настройками безопасности хранимой процедуры под ролью SqlJDBCXAUser. alt text

8
задан Ittai 1 November 2010 в 15:33
поделиться