手动解决Spring [Boot]中的依赖关系

时间:2017-02-16 13:44:01

标签: java spring spring-boot dependency-injection

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

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

这样的东西
Class<? extends Interface> className = service.getClassName();
Interface x = SpringDI.getInstance(className);

但我似乎无法找到任何办法。我该怎么办?

修改

类名是动态解析的,我已经更新了我的示例pseuido-code以反映出来。

1 个答案:

答案 0 :(得分:5)

如何在要实例化这些类的组件中自动装配ApplicationContext?当ApplicationContext实现BeanFactory接口时,您可以调用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