Маркерный интерфейс
Aware
служит родителем большому количеству интерфейсов с именами *Aware
. Каждый из них, при реализации, доставляет бину какую-то специфичную для себя сущность. Так, например, компонент, которому нужно обратиться к контексту приложения, должен реализовывать ApplicationContextAware
.Технически, сами интерфейсы ничего не делают. Интерфейс
FooAware
обычно объявляет единственный метод void setFoo(Foo value)
. Через этот метод связанный с интерфейсом BeanPostProcessor
передаст в бин нужную сущность. Если бин реализует
ServletContextAware
, то в процессе инициализации бина к нему придет ServletContextAwareProcessor
, и вызовет setServletContext
с контекстом сервлета в качестве параметра.