У меня есть следующая конфигурация spring:
<context:component-scan base-package="uk.co.mysite.googlecontactsync.aop"/>
<bean name="simpleEmailSender" class="uk.co.mysite.util.email.simple.SimpleEmailSenderImplementation"/>
<aop:aspectj-autoproxy/>
Тогда у меня есть аспект:
@Aspect
public class SyncLoggingAspect {
@Autowired
private SimpleEmailSender simpleEmailSender
@AfterReturning(value="execution(* uk.co.mysite.datasync.polling.Poller+.doPoll())", returning="pusher")
public void afterPoll(Pusher pusher) {
simpleEmailSender.send(new PusherEmail(pusher));
}
}
Этот аспект работает (я могу нажать точку останова на afterPoll), но simpleEmailSender имеет значение null. К сожалению, я не могу найти четкую документацию о том, почему это так. (Для записи мой simpleEmailSender bean существует и правильно подключен к другим классам). Следующие вещи меня путают:
- Контекст: компонентное сканирование должно собирать @Aspect? Если это так, то это был бы spring управляемый bean, таким образом, autwired должен работать?
- Если контекст: компонент-сканирование не для создания аспектов, как создается мой аспект? Я думал, что aop: aspectj-autoproxy просто создает beanPostProcessor для прокси-сервера моего класса @Aspect? Как это сделать, если это не spring управляемый bean?
Очевидно, вы можете сказать, что у меня нет понимания того, как все должно работать с нуля.