Java AnnotationConfigApplicationContext无法多次刷新是否有原因?

Java AnnotationConfigApplicationContext无法多次刷新是否有原因?,java,spring,Java,Spring,我可以在ClassPathXmlApplicationContext上多次调用refresh(),但在使用AnnotationConfigApplicationContext时,我不能这样做。 有没有具体的原因 我知道当使用@Configurationbean时,上下文的配置不能在运行时更改(因为类本身需要更改)但是,如果我还想使用@ImportResource包含applicationContext.xml文件,那么就没有办法多次刷新上下文(如果我只使用xml文件和ClassPathXmlAp

我可以在
ClassPathXmlApplicationContext
上多次调用
refresh()
,但在使用
AnnotationConfigApplicationContext
时,我不能这样做。 有没有具体的原因

我知道当使用
@Configuration
bean时,上下文的配置不能在运行时更改(因为类本身需要更改)但是,如果我还想使用
@ImportResource
包含
applicationContext.xml
文件,那么就没有办法多次刷新上下文(如果我只使用xml文件和
ClassPathXmlApplicationContext
,我就可以根据需要多次刷新上下文)


是否有一种方法可以重新刷新同时使用
@Configuration
bean和xml文件的applicationContext?或者可能还有其他一些原因使
注释ConfigApplicationContext
不可刷新,但我不知道?

这个类中没有任何东西可以阻止这一点。什么不适合您?AnnotationConfigApplicationContext只允许刷新一次,并且在多次调用refresh()时引发异常。它扩展了GenericaApplicationContext而不是AbstractRefreshableApplicationContext有趣的是,
AnnotationConfigWebApplicationContext
实际上是可刷新的。您可以始终使用
ClassPathXmlApplicationContext
并在其中注册
@配置
类(而不是
注释ConfigApplicationContext
注册
扫描
方法)。最终结果将是相同的,但现在它是可刷新的,同时您可能希望在中创建一个enhanchement请求。您是对的,事实证明,如果我使用
ClassPathXmlApplicationContext
并启用上下文注释,我可以添加一个
@Configuration
bean作为任何其他bean,它将得到正确处理。因此,我将拥有与
注释ConfigApplicationContext
几乎相同的功能,但能够执行多次刷新。我刚刚测试了它,它工作正常,谢谢。