2

我有一个 servlet 的应用程序上下文 XML 文件 ( /app/feature)。整个 Web 应用程序也有一个应用程序上下文(即 servlet 上下文/app),并且有多个带有其他 XML 文件的 servlet。我了解/app作为/app/feature.

当我放入<task:annotation-driven/>子应用程序上下文时,检查了哪些 bean 的 @Async 和 @Scheduled 注释?

4

3 回答 3

1

像这样的task:annotation-driven寄存器 BeanPostProcessors 是ScheduledAnnotationBeanPostProcessor针对每个容器的:

...beans that are defined in one container are not post-processed by 
a BeanPostProcessor defined in another container, even if both containers 
are part of the same hierarchy.
于 2013-03-25T21:43:54.337 回答
0

内部逻辑是这样的,例如:applicationContext.xml你说的是父文件,spring-servlet.xml是你说的子文件。然后当tomcat启动时,首先将applicationContext.xml中的所有bean都实例化,其次将spring-servlet.xml中的所有bean实例化,然后会发生一些事情,如果bean A在applicationContext.xml和spring中都配置了-servlet.xml,那么 A 的第一个实例将被第二个实例覆盖。所以如果你添加<task:annotation-driven/>in applicationContext.xml,它就不起作用了,因为整个 bean 已经被 spring-servlet.xml 中实例化的 bean 覆盖了。

于 2013-03-26T00:13:52.100 回答
0

它将寻找@Async,其中@Scheduled 将使您能够安排每5000 毫秒之后的执行。

于 2016-07-08T10:54:19.637 回答