【发布时间】:2017-10-20 21:03:16
【问题描述】:
我正在浏览 spring 文档,并遇到了以下声明-
然后,您可以使用 getBean 来检索 bean 的实例。 ApplicationContext 接口还有一些其他方法 检索 bean,但理想情况下,您的应用程序代码不应该使用 他们。 确实,您的应用程序代码不应调用 getBean() 方法,因此不依赖于 Spring API 全部。例如,Spring 与 Web 框架的集成提供了 各种 Web 框架组件的依赖注入,例如 控制器和 JSF 管理的 bean,允许您声明一个 通过元数据对特定 bean 的依赖(例如,自动装配 注释)。
参考-https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html
在我的应用程序中,我收到一些参数给我的客户端方法,基于这些参数,我注入了接口的正确实现。
我这样做的方式是,在连接这些参数后搜索 bean id。
例如,如果我收到type=C、subType=D,我会通过调用 getBean(beanId) 获得带有bean id=typeCsubTypeD 的 bean。
即,我的依赖项是在运行时决定的。
我已经通过Why is Spring's ApplicationContext.getBean considered bad?
但是,这不包括我的用例(正如该问题中的评论所解决的那样)。
【问题讨论】:
-
有趣的问题,你能分享一下代码吗?参数是怎么进来的?
-
我的项目在另一个应用程序中用作 jar 库。该应用程序调用此 jar 的方法。现在根据它传递的参数,我必须选择 bean 并产生结果。
标签: java spring dependency-injection