spring依赖注入的方式到底有几种?

网上的说法各种各样
构造器注入 setter方法注入 静态工厂注入 实例工厂注入 接口注入 属性注入...

最常见的说法是:构造器注入 setter方法注入 属性注入。这种说法是正确的吗?
并且网上举的例子都是xml配置,那在springboot中,怎么通过注解实现这三种依赖注入?
我们代码中常用的下面这种注入属于什么注入呢?

public class CommonBIDSearchBiz implements ICommonBIDSearchBiz {
    @Autowired
    ToolHttp toolHttp;
    //xxx
}
阅读 4.5k
4 个回答
  1. spring官方文档里只说了 通过构造器注入 和 通过setter注入
  2. 字段/属性 是使用 Autowired 注解进行配置时的一种特殊注入方式
  3. 该怎么注入就怎么注入,spring-boot不影响

这东西,看官方文档吧。网络上人云亦云的,创造了许多有的没有的。
Dependency Injection

DI exists in two major variants: Constructor-based dependency injection and Setter-based dependency injection.

首先说法正确。
springmvc中bean的注入:
<bean>id="commonBIDSearchBiz" class="com.my.CommonBIDSearchBiz"

<!--其他配置-->

</bean>
不想用xml配置可以这样:
@Configuration
public class CommonBIDSearchBiz{

@Bean
public CommonBIDSearchBiz commonBIDSearchBiz(){
    return new CommonBIDSearchBiz();
}

}

最下边的方式是注解的方式;

常用的有
1.

@Component
public class CommonBIDSearchBiz implements ICommonBIDSearchBiz {

    @Autowired
    ToolHttp toolHttp;
    
    //xxx
}

2.

@Component
@AllArgsConstructor
public class CommonBIDSearchBiz implements ICommonBIDSearchBiz {
    
    private final ToolHttp toolHttp;
    
    //xxx
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题