gpt4 book ai didi

java - 如何在运行时在启用 Spring 的 Web 应用程序中安排新方法?

转载 作者:搜寻专家 更新时间:2023-11-01 03:13:49 24 4
gpt4 key购买 nike

现在我有一个带有 @Scheduled 方法的 bean,工作正常;它在我的 applicationContext.xml 中声明。

<!-- some JPA stuff -->

<bean id="aWorkingBean" class="some.package.WorkingBean">
<property name="someDAO" ref="someDAO" />
</bean>

<task:annotation-driven scheduler="myScheduler" />
<task:scheduler id="myScheduler" pool-size="10" />

我想做的是根据请求以编程方式安排另一种方法(例如加载一些带注释的类并注入(inject)其依赖项)。像这样的东西:

WebApplicationContext ctx = ContextLoader.getCurrentWebApplicationContext();
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(NonWorkingBean.class);
// add DAO references...
ctx.registerBeanDefinition("nonWorkingBean", builder.getBeanDefinition()); // <-- this doesn't work

显然它不起作用,因为 XmlWebApplicationContext 是只读的并且没有 registerBeanDefinition 方法。还有其他方法可以实现吗?

我正在使用 Tomcat 6.0.29 和 Spring 3.0.4

最佳答案

<task:scheduler>@Scheduled实际上只是一种调度静态任务的便捷方法。它不太适合动态调度。是的,您可以让它发挥作用,但这会很尴尬。

当你输入 <task:scheduler id="myScheduler">在你的配置中,Spring 创建一个 TaskScheduler bean 叫myScheduler .这可以注入(inject)到您自己的 bean 中,并且可以通过编程方式调用以安排新任务。您需要创建一个 Runnable传递给 TaskScheduler ,但这应该很简单。

关于java - 如何在运行时在启用 Spring 的 Web 应用程序中安排新方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4279446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com