gpt4 book ai didi

java - 是否可以将包中的所有类注册为 Spring bean

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:41:51 25 4
gpt4 key购买 nike

我熟悉基于 Springs Java 的配置选项,包括 @Component@Configuration@Bean 注释的结合使用注册 Spring bean。

但是,当将一个体面大小的项目转换为 Spring 时,系统地接触项目中的所有类并使用 @Configuration @Bean 进行更新可能会非常耗费人力或者用 @Component 注释每个类。我们有一个大型 Groovy 项目要转换,我想简化这个过程。

我的问题: Spring 中是否提供了一种工具,允许您告诉 Spring 自动配置特定包中的所有有效 bean 候选类?

如果没有,还有哪些其他选项可用?

最佳答案

ClassPathBeanDefinitionScanner 就是您所需要的。

public class Main {
public static void main(String[] args) {
GenericApplicationContext context = new GenericApplicationContext();
ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context, false);
scanner.addIncludeFilter((metadataReader, metadataReaderFactory) -> true);
scanner.scan("net.company.name");
context.refresh();

A a = context.getBean(A.class);
System.out.println(a.toString());
}
}

如果需要,您可以在包含过滤器中传递自定义逻辑。在当前版本中,所提供包中的每个类都将作为一个 bean 包含在内。

但是不可能自动在您的类上构建正确的依赖结构,这实际上取决于您想要的范围。您需要亲自动手。

关于java - 是否可以将包中的所有类注册为 Spring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com