是否可以将包中的所有类注册为Spring Bean

我熟悉基于Springs

Java的配置选项,包括使用注记@Component@Configuration@Bean注记结合使用以注册Spring Bean。

但是,将体面大小的项目转换为Spring时,系统地触摸项目中的所有类并用@Configuration@Beans

更新或用注释每个类可能会非常耗费人力@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包含在内。

但是不可能自动地在类上建立正确的依赖关系结构,这实际上取决于所需的作用域。您需要用手来做。

以上是 是否可以将包中的所有类注册为Spring Bean 的全部内容, 来源链接: utcz.com/qa/412288.html

回到顶部