2016-07-06 4 views
0

Мои требования к приложениям означают, что мне нужно создавать компоненты приложения вручную во время выполнения, а затем добавлять их в контекст приложения.Spring: Использование PropertyPlaceholderConfigurer поддержка вне контекста приложения

Эти компоненты принадлежат сторонним библиотекам, поэтому я не могу их модифицировать, например. TibjmsConnectionFactory

Так что мой завод класс, который создает эти бобы должно быть снабжено Properties объектом, который будет задавать имя пользователя, пароль и т.д. connectionTimeouts

В идеале я хотел бы использовать поддержку собственности Spring «s так что я не нужно конвертировать строки в Целый и т.д.

Кроме того, Properties при условии моей фабрики класса не будет один и то же свойством, используемым для по PropertyPlaceholderConfigurer в моем общих ApplicationContext

Как Я достигаю этого, или это даже возможно?

public class MyCustomFactoryStrategy { 
    @Override 
    public TibjmsConnectionFactory create(Properties properties) { 
     TibjmsConnectionFactory connectionFactory = new TibjmsConnectionFactory(); 
     connectionFactory.setServerUrl(properties.getProperty("emsServerUrl")); // this is a string 
     connectionFactory.setConnAttemptCount(new Integer(properties.getProperty("connAttemptCount"))); // this is an integer 
     ... 
     return connectionFactory; 
    } 

ответ

0

Посмотрите на это сообщение. Я думаю, это может быть то, что вам нужно.

[PropertyPlaceholderConfigurer not loading programmatically

[1]:

+0

Так что предложение здесь, чтобы создать контекст пользовательских приложений вместо моей фабрики выше, а затем, как только я боб инициализируется я могу взять его от контекст приложения и добавить к моему основному? – DJ180

+0

Да, здесь есть две вещи. Прежде всего, нужно получить дескриптор контекста, чтобы вы могли его программно настроить. Второй момент - инициализировать PropertyPlaceHolderConfigurer, чтобы вы могли передавать свойства системы извне приложения. –