2015-09-20 6 views
2

Если я использую интерфейс ApplicationContextAware для моего bean-компонента, то я получу экземпляр ApplicationContext в моей bean-компоненте, но что такое практическое использование? зачем нам нужны интерфейсы *Aware, зачем мне связывать мой код с весной?Практическое использование интерфейса Aware весной

+3

javaodc объясняет это: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/ApplicationContextAware.html. Помните, что этот интерфейс очень старый. Большинство случаев, когда это было полезно в прошлом, теперь применимы с лучшими альтернативами. –

ответ

0

В соответствии с пружиной doc:

Таким образом, компоненты могут манипулировать программные средства в ApplicationContext, что создал их, через интерфейс ApplicationContext, или путем литья ссылку на известный подкласс этого интерфейса, такие как ConfigurableApplicationContext , который предоставляет дополнительную функциональность . Одним из видов использования будет программный поиск других фасолей . Иногда эта возможность полезна; однако, в общем, вы должны избегать этого, потому что он связывает код с Spring и не следуют стилю «Обращение к управлению», где соавторы предоставляются для beans как свойства. Другие методы ApplicationContext обеспечивает доступ к файловым ресурсам, публикацию событий приложений и доступ к источнику сообщений.

0

Вы можете иметь ссылку на контекст приложения, если вы хотите опубликовать событие приложения от компонента, или ссылка на MessageSource предоставленной MessageSourceAware, если вы хотите, чтобы получить какое-то сообщение.

Но, как упоминает JB Nizet в своем комментарии, обычно есть лучшие альтернативы. Например, вы можете обычно использовать Autowire MessageSource или ApplicationEventPublisher и другие компоненты, предоставляемые интерфейсами *Aware, поэтому, как правило, нет необходимости в реализации этих интерфейсов.

Смежные вопросы