Реализация интерфейса — это тесная связь?

здесь говорится, что

Я бы не рекомендовал использовать интерфейс InitializingBean и DisposableBean, потому что он будет тесно связан с кодом Spring.

Имеет ли это смысл? Я думал, что это будет прямо противоположно жесткой связи.


person Luis Sep    schedule 13.01.2014    source источник


Ответы (2)


Здесь автор имеет в виду, что если вы позволяете своим классам приложений реализовывать интерфейсы InitializingBean и DisposableBean (которые являются интерфейсами, специфичными для Spring), то вы связываете свой код с spring. В будущем, если Spring переименует эти интерфейсы (хотя маловероятно) или вы перестанете использовать Spring, вам придется обновить код класса.

Вместо этого, если вы используете атрибуты init-method и destroy-method в конфигурации bean-компонента, ваш класс не зависит от Spring, т. е. ваш класс не зависит от конкретных классов Spring.

Надеюсь, поможет.

person coder    schedule 13.01.2014
comment
you stop using spring you will have to update your class code. Тогда разве @PostConstruct and @PreDestroy не будет ли тесно связанный код с Spring? - person ; 22.03.2018

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

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

Когда вы явно объявляете такую ​​​​зависимость, вы связываете свой код с пружинными банками.

В этом другом примере — http://www.mkyong.com/spring/spring-init-method-and-destroy-method-example/ — здесь показано, как можно использовать условные методы, определенные в XML. Весеннего импорта нет.

person Community    schedule 13.01.2014