[spring-projects/spring-boot]支持程序化的lazy-int排除
回答
感谢您的公关,@tkvangorder。我们可能会探索回调接口Predicate<Class<?>>
作为合并的一部分进行扩展的可能性。
@wilkinsona 谓词是一个好主意,它为下游项目提供了更多的控制权。我做了一些更改来支持谓词,这是您的想法吗?
标记为引起团队注意,以便我们可以讨论从 bean 定义到已定义 bean 类型的最佳方法。
我提出了https://github.com/spring-projects/spring-framework/issues/23056来看看我们的哪些(如果有的话)BeanTypeRegistry
可以被拉入 Spring 框架。
虽然BeanTypeRegistry
代码现在已经被拉出来,但我们仍然被阻止在https://github.com/spring-projects/spring-framework/issues/23374
@wilkinsona @philwebb
由于我们现在有一个方法可以从工厂中提取给定类型的所有 bean(无需初始化工厂 bean):
如果不使用谓词,而是返回到返回应从延迟加载处理器中排除的类列表的“定制器”,您有何感受?然后,我可以迭代定制器中的类并使用,getBeansOfType(Class<?>, false, false);
而不需要对 BeanFactory 进行任何额外的更改。
@tkvangorder 我仍然希望我们能够在 GA 之前将https://github.com/spring-projects/spring-framework/issues/23374修复到框架中
@philwebb 我已经更新了此 PR 以利用新BeanFactory.getType(name, boolean)
方法。
@tkvangorder 哇,太快了!!它几个小时前才登陆框架?
@philwebb @wilkinsona 我知道你们都忙得不可开交,但我认为这个公关已经准备好了。你想让我用它做别的事吗?
@tkvangorder 恐怕我们还没有做到这一点,但是这个在列表中确实很高,我们需要在 RC1 之前合并它。请放心,我们没有忘记:)
非常感谢@tkvangorder,现在已合并到 master 中。
我在提交 3ffc5f2a301186c67fa2d59cbdb83c2eaa7eaf48 中做了一些改进。我决定重命名EagerLoadingBeanDefinitionPredicate
为LazyInitializationExcludeFilter
以匹配我们已有的一些其他回调接口名称。我还扩展了签名以传递beanName
和beanDefinition
以及beanType
.由于这会使更明显的实现之一变得复杂,因此我还添加了一个静态工厂方法,以便您可以LazyInitializationExcludeFilter.forBeanTypes(IntegrationFlow.class)
快速创建基于类型的过滤器。
再次感谢您为此所做的所有工作,如果您发现我的更改有任何问题,请告诉我!
我喜欢这些变化。谢谢!