Ответ 1
Интерфейс xxxAware
- это общий шаблон, используемый в рамках Spring. Они обычно используются для предоставления bean bean (объекту ) объекта Spring
Документация Springs говорит об интерфейсе Aware
, который является супер-интерфейсом для двух, о которых вы упоминаете:
Поверхностный указатель маркера, указывающий, что bean может быть уведомлен контейнером Spring конкретного объекта рамки через метод обратного вызова.
Как указывает Sotirious, интерфейс Aware
имеет представление о шаблонах слушателя, обратного вызова или шаблона наблюдения.
Использование будет выглядеть так:
@Component
public MyBean implements BeanFactoryAware {
private BeanFactory beanFactory;
@Override
public void setBeanFactory(final BeanFactory beanFactory) {
this.beanFactory = beanFactory;
}
public void myMethod() {
//I can now use beanFactory here
}
}
Во время начальной загрузки Spring проверит каждый bean, чтобы определить, реализует ли он какой-либо из интерфейсов xxxAware
. Когда он найден, он вызывает метод интерфейса, предоставляя запрашиваемую часть информации. В приведенном выше примере Spring вызывает MyBean#setBeanFactory
, предоставляя его BeanFactory
.
Конечно, во многих ситуациях не обязательно использовать эти интерфейсы. Например, интерфейс ApplicationContextAware
можно обойти, просто @Autowired
ing ApplicationContext
в bean.
@Component
public class MyOtherBean {
@Autowired
private ApplicationContext applicationContext;
public void someMethod() {
//I can use the ApplicationContext here.
}
}