如果在Spring上下文中找不到bean,如何提供自定义逻辑来搜索它

如果在Spring上下文中找不到bean,如何提供自定义逻辑来搜索它,spring,javabeans,Spring,Javabeans,如果Spring上下文找不到从我的xml中引用的bean,我希望能够在抛出BeanNotFoundException(无论期望值是什么)之前提供一些自定义逻辑(即在另一个Spring上下文中查找或以编程方式创建bean)。您可以使用(单击链接以获取解释) 或者,如果您想以一种懒惰的方式(而不是在应用程序启动时)处理bean,我强烈建议不要这样做,因为您将有与bean配置状态相关的bug,而这些bug在编译时是不可见的:无论如何,您肯定可以向您的应用程序上下文添加一个自定义单例:而不是调用getB

如果Spring上下文找不到从我的xml中引用的bean,我希望能够在抛出BeanNotFoundException(无论期望值是什么)之前提供一些自定义逻辑(即在另一个Spring上下文中查找或以编程方式创建bean)。

您可以使用(单击链接以获取解释)

或者,如果您想以一种懒惰的方式(而不是在应用程序启动时)处理bean,我强烈建议不要这样做,因为您将有与bean配置状态相关的bug,而这些bug在编译时是不可见的:无论如何,您肯定可以向您的应用程序上下文添加一个自定义单例:而不是调用getBean()从spring开始,如果没有找到任何内容,将调用您的类来响应哪个bean对应于一个bean名称,并且您将间接地有机会处理BeanNotFoundException


请参阅关于第二种(不推荐)解决方案的帖子:

You's welcome@rascal1981,我不建议在每个运行时使用不同的AppContext状态(取决于是否存在BeanNotFoundException,因此是否动态添加了bean):您将不得不处理非常复杂的错误,您将怀疑在错误发生的那一刻bean是否存在于conf中。这将使代码不可读,并且所有情况的组合都无法实现。这在纸面上看起来可能不错,但我认为只有在确实必要的情况下,您才应该采用这样的解决方案