Использование Spring AOP с планировщиком кварца - PullRequest
1 голос
/ 05 октября 2011

Я использую планировщик Quartz для целей планирования в моем проекте. Мне нужно собрать статистику, например, когда, как долго и сколько раз выполнялась работа. Я хочу использовать Spring AOP для того же. Для этого я делаю классы Job на бобах с пружинным управлением. Spring создает класс Proxy для каждого из классов Job. Но теперь, когда Quartz пытается выполнить это управляемое пружиной задание, я получаю InstantiationException для класса Proxy, созданного для задания Spring.

org.quartz.SchedulerException: проблема создания экземпляра класса '$ Proxy6' [См. Вложенное исключение: java.lang.InstantiationException: $ Proxy6]

Кто-нибудь может предложить решение этой проблемы?

Ответы [ 2 ]

1 голос
/ 05 октября 2011

Если вы используете Quarz напрямую (не с помощью аннотации Spring Schedule), вы можете запросить у Quz напрямую статистику.- Многие из них уже внедрены в кв.

0 голосов
/ 16 марта 2019

Поскольку класс Quartz Job управляется контейнером Quartz, а не контейнером Spring, Spring AOP не может достичь вашей цели.Для вашей цели есть два способа работы с этим:

  1. Кварц имеет встроенный механизм прослушивателя, вы можете использовать глобальный прослушиватель, если хотите, как вам нужно, во время работы AOP.Для получения дополнительной информации о слушателе см.: Кварцевый документ .

  2. Если вы настаиваете на Spring AOP, вам необходимо настроить процесс создания класса задания, чтобыкласс заданий управляется Spring Container.Один из подходов - написать свой собственный JobFactory, который расширяет SpringBeanJobFactory, а затем переопределяет метод createJobInstance().Если вы хотите больше об этом, пожалуйста, прокомментируйте это, я напишу более подробно об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...