Advertisement

@Inject失效问题解决方案:新创建对象中未被注入属性的问题

阅读量:

代码中使用new创建的对象中的@Autowired属性不会被自动装配注入;

当类A中存在成员变量B,并且B是通过@Autowired注解进行自动注入时,若类A的实例是采用new关键字手动创建的方式生成,则此时自动注入机制将无法正常工作。

为解决这一问题,可以借助Spring上下文来获取相应的对象实例。

伪代码示例如下:ClassBInterface b = (ClassBInterfaceImpl) ServiceLocator.getBean("classBInterfaceImpl");

ServiceLocator作为用于获取对象的工具类,其具体实现方式如下所示

复制代码
  
    
 // 获取spring对象的工具类,这个工具类是springboot扫描自动装入spring容器的,在需要使用的地方,即不能自动装配的类的方法中 如下方式使用就行了
    
 NettyClientService nettyClientService = (NettyClientService) ServiceLocator.getBean("nettyClientServiceImpl");
    
  
    
 @Component
    
 public class ServiceLocator implements ApplicationContext

全部评论 (0)

还没有任何评论哟~