将属性注入 QuartzJobObject
我是否正确地认为我的 QuartzJobObject 不能注入任何 DAO 或其他 Spring 管理的对象?
希望我可以做这样的事情(orderService
是我想要注入的):
<object name="checkPendingOrdersJob" type="Spring.Scheduling.Quartz.JobDetailObject, Spring.Scheduling.Quartz">
<property name="JobType" value="Munch.ScheduledTasks.CheckPendingOrdersJob" />
<!-- We can inject values through JobDataMap -->
<property name="JobDataAsMap">
<dictionary>
<!--entry key="UserName" value="Alexandre" /-->
</dictionary>
</property>
<property name="orderService" ref="orderService"/>
</object>
...我知道由于它的类型而没有意义。但是,我可以通过某种方式注入一些 DAO、服务等。但我无法弄清楚。我该怎么做?
Am I right in thinking that my QuartzJobObject
can't have any DAO's or other Spring-managed objects injected into it?
Was hoping I could do something like this (orderService
is what I want to inject):
<object name="checkPendingOrdersJob" type="Spring.Scheduling.Quartz.JobDetailObject, Spring.Scheduling.Quartz">
<property name="JobType" value="Munch.ScheduledTasks.CheckPendingOrdersJob" />
<!-- We can inject values through JobDataMap -->
<property name="JobDataAsMap">
<dictionary>
<!--entry key="UserName" value="Alexandre" /-->
</dictionary>
</property>
<property name="orderService" ref="orderService"/>
</object>
...which I know doesn't make sense because of the type it is. But, I could do with being able to inject some DAO's, Services etc somehow. I can't figure it out though. How can I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这就是我最终得到的结果,它工作得很好(希望对其他人有用)
了解 Spring 上下文的作业工厂
作业本身(检查数据库中的情况)记录,如果至少有 HomeManyMenuItemsIsOK 个,则一切都很好)。注意:menuService 是一个注入的 spring 管理对象,它本身有几个 DAO)。 HowManyMenuItemsIsOK 是通过作业数据映射传入的静态属性。
最后是 Spring 配置
This is what I've ended up with and it works perfectly (hopefully useful to someone else)
Job factory that is aware of Spring's context
The job itself (checks the DB for records and if there are at least HomeManyMenuItemsIsOK of them, everything is good). Note: menuService is an injected spring-managed object that itself has several DAO's in it). HowManyMenuItemsIsOK is a static property that's passed in through the job data map.
And finally the Spring config
您可以通过覆盖
CreateJobInstance
来将属性/构造函数注入到您的作业中AdaptableJobFactory 并注册新的 JobFactory 而不是默认的 JobFactory。
传入的 TriggerFiredBundle 为您提供了足够的信息来向上下文请求匹配的作业(基于约定)。
bundle.JobDetail.JobType.Name
和bundle.JobDetail.JobType
满足了我的需求,所以早在 2008 年我就得到了一些东西。像这样(该类是从AdaptableJobFactory
派生的,并实现IApplicationContextAware
来注入上下文):您需要使用以下配置注册 ContextAwareJobFactory:
我不知道是否有某事。 ootb 因为它是在 2008 年开发的,所以我没有关注quartz.net 的集成进度。
You can do property/constructor injection into your job by overiding
CreateJobInstance
ofAdaptableJobFactory and register your new JobFactory instead of the default one.
The passed in
TriggerFiredBundle
provides you with enough infos to ask the context for a matching job (based on conventions).bundle.JobDetail.JobType.Name
andbundle.JobDetail.JobType
fitted my need, so back in 2008 I ended up with sth. like this (the class is derived formAdaptableJobFactory
and implementsIApplicationContextAware
to get the context injected):You need to register the ContextAwareJobFactory using the following config:
I don't know if there is sth. ootb since this was developed in 2008 and I did not followed the integration progress made for quartz.net.