我有一个servlet的应用程序上下文XML文件(/app/feature
)。 Web应用程序作为一个整体还有一个应用程序上下文(即对于servlet上下文/app
),并且有多个servlet与其他XML文件。我理解/app
的春天语境可以作为/app/feature
的参与者。
当我在子应用程序上下文中放入<task:annotation-driven/>
时,会检查哪些bean是@Async和@Scheduled注释?
答案 0 :(得分: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.
答案 1 :(得分:0)
内部逻辑是这样的,例如:applicationContext.xml
是你说的父文件而spring-servlet.xml
是你说的子文件。然后当tomcat启动时,首先将实例化applicationContext.xml中的所有bean,然后将实例化spring-servlet.xml中的所有bean,如果beanA在applicationContext.xml和spring中都被包含,那么会发生一些事情。 -servlet.xml,然后第一个A实例将被第二个实例覆盖。因此,如果在<task:annotation-driven/>
中添加applicationContext.xml
,它就不起作用,因为整个bean已被spring-servlet.xml中实例化的bean覆盖。
答案 2 :(得分:0)
它将寻找@Async,其中@Scheduled将使您能够像每隔5000毫秒一样安排执行。