gpt4 book ai didi

java - 在 Spring [Boot] 中手动解决依赖关系

转载 作者:行者123 更新时间:2023-11-30 06:07:08 25 4
gpt4 key购买 nike

这看起来应该是微不足道的,但 Google 和 StackOverflow 似乎与 Spring 文档一样不合作(或者我只是不知道去哪里看)。

我的 Spring Boot 应用程序需要手动实例化某些类。有些类有依赖关系,所以我不能使用 .newInstance();相反,我想我需要让 Spring 从它的 DI 容器中给我实例。有点像

Class<? extends Interface> className = service.getClassName();
Interface x = SpringDI.getInstance(className);

但我似乎找不到任何方法来做到这一点。我该怎么办?

编辑

类名是动态解析的,我已经更新了示例伪代码以反射(reflect)这一点。

最佳答案

如何在要实例化这些类的组件中 Autowiring ApplicationContext?由于 ApplicationContext 实现了 BeanFactory 接口(interface),您可以调用 getBean() 方法。

类似于:

@Autowired
private ApplicationContext applicationContext;

[...]

applicationContext.getAutowireCapableBeanFactory().getBean(clazz_name);

不过,我不确定您为什么要这样做,因为它违背了使用 Spring 的目的。 (你可以不使用 Spring 而使用 Java 的反射 API)

请引用这部分JavaDocs:http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/BeanFactory.html

关于java - 在 Spring [Boot] 中手动解决依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42275688/

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