Spring Wire статический класс

Программные инструменты Brian W. Kernighan и P. J. Plauger с большим отрывом имел большую часть эффекта на меня.

8
задан Betlista 13 June 2012 в 09:35
поделиться

3 ответа

Использование подобной статики действительно идет вразрез с сущностью Spring IoC, но если у вас действительно есть для их использования, то я бы предложил написать простой Spring hook, который берет Foo и вставляет его в FooFactory , например

public class FooFactoryProcessor implements InitializingBean {

    private Foo foo;

    public void setFoo(Foo foo) {
        this.foo = foo;
    }

    public void afterPropertiesSet() throws Exception {
        Foofactory.setFoo(foo);
    }
}

И в ваш XML:

<bean id="foo" class="Foo"/>

<bean class="FooFactoryProcessor">
   <property name="foo" ref="foo"/>
</bean>

Нет необходимости изменять Foo или FooFactory

]
10
ответ дан 5 December 2019 в 14:05
поделиться

Определяет ли bean-компонент как singleton в используемой здесь конфигурации Spring? Затем вы можете внедрить его в LegacyB , используя свойство или конструктор inject (я предпочитаю последний), и тогда будет доступен только один экземпляр.

EDIT: Re. ваш измененный вопрос (!) Я не уверен, почему вы просто не вводите Foo снова как синглтон в свой factory. Также обратите внимание, что вы можете использовать метод getInstance () через конфигурации Spring с помощью factory-method и поддерживать внедрение через все классы.

1
ответ дан 5 December 2019 в 14:05
поделиться

В дополнение к ответу скаффмана вы должны быть очень осторожны с порядком инициализации.

При использовании только Spring beans фреймворк автоматически определит правильный порядок инициализации. Однако, как только вы выполняете одноэлементные трюки, это может сломаться, если вы не будете осторожны.

Другими словами, убедитесь, что LegacyA не может быть запущен до завершения загрузки контекста приложения.

1
ответ дан 5 December 2019 в 14:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: