В случае с Spring вам не нужно реализовывать специфичный для Spring интерфейс, чтобы иметь возможность использовать Spring с вашим кодом. На самом деле это рассматривается как преимущество: он предотвращает привязку вашего кода к Spring, что делает его более переносимым.
Это не значит, что вы не можете реализовать специфичные для Spring интерфейсы. Один пример, который приходит на ум (не каламбур): InitializingBean
; это определяет метод afterPropertiesSet()
, который вызывается (как следует из названия) после того, как Spring создаст экземпляр вашего бина и установит все его свойства.
Так что часто есть специфичные для фреймворка интерфейсы и классы, которые вы можете использовать; вы должны сбалансировать хранение вашего кода с использованием полезных вещей, которые предоставляют фреймворки.
Вы привели пример компонента OSGi, который может реализовывать интерфейс OSGIComponent
. Spring действительно имеет интерфейс, который ваш класс может реализовать, чтобы передать ссылку на содержащий контекст Spring: ApplicationContextAware
. Однако, как правило, вам не нужно использовать эти специфичные для фреймворка интерфейсы. Ваш код, как правило, легче понять, если он сосредоточен только на реальной бизнес-логике, а не на деталях того, как инфраструктура создает объекты, соединяет их вместе и т. Д.