作者:cndz 围观群众:1189 更新于 标签:springspring-DI依赖注入依赖注入详解
依赖注入(DI)是一种设计模式,它允许对象相互协作,而不是在代码中直接创建和管理它们之间的依赖关系。Spring中,有多种DI方法可供选择,每种方法都有自己的优点和缺点。在本文中,我们将讨论三种最常见的Java DI方法及其优缺点。下面对它们进行详细介绍。
public class testController {
private final TestService testService;
private final TestService2 testService2;
@Autowired
public Car(TestService testService,TestServce2 testService2) {
this.testService = testService;
}
//其他代码
}
在上面的代码中如果只有一个构造方法,其实@Autowired注解是可以省略的。
public class TestController {
private TestService testService;
private TestService2 testService2;
public TestController() {
}
@Autowired
public void setTestService(TestService testService) {
this.testService = testService;
}
@Autowired
public void setTestService(TestService2 testService2) {
this.testService2 = testService2;
}
// 其他代码
}
public class TestController {
@Autowired
private TestService testService;
@Autowired
private TestService2 testService2;
// ...
}
这里是使用 @Autowired
注解注入。另外也有 @Resource
以及 @Inject
等注解,都可以实现注入。
在IDEA中,如果使用@Autowired注解的时候会有一个警告:不推荐属性注入。
在选择DI方式时,需要权衡每种方式的优缺点。构造函数注入可以使代码更加清晰和安全,但当依赖关系数量增加时,构造函数的签名可能会变得很长。Setter方法注入可以使代码更加简洁,但需要在目标类中进行空指针检查等额外的代码。字段注入可以使代码更加简洁,但会增加目标类对Spring框架的依赖性。因此,在选择DI方式时,需要考虑应用程序的需求以及代码的可读性和易维护性。