依赖注入是什么意思?
这个问题在这里已经有了答案:
依赖注入允许开发人员将类引用放入项目中,而不必将其作为对象创建。
在春天的情况下,我对DI有很多了解,我希望在config.xml文件中使用classpath,并且我可以将这个类引用传递给我需要调用的任何类。 被注入的类就像一个单例,只有一个引用被传递而没有将其声明为单例。 它通常是一个注入的服务类。
依赖注入使客户可以灵活配置。 只有客户的行为是固定的。 这可以节省时间交换要注入到xml文件中的内容,而无需重新编译项目。
这就是为什么我说它更像是一个只使用一个实例的单例
public class Foo {
// Constructor
public Foo() {
// Specify a specific implementation in the constructor instead of using dependency injection
Service service1 = new ServiceExample();
}
private void RandomMethod() {
Service service2 = new ServiceExample();
}
}
这里一个服务被使用两次,因为创建了两个实例。 我已经看到了一些项目,在这些项目中,类文件变得如此之大,以不同的方法在一个类中创建了三次服务类。
public class Foo {
// Internal reference to the service
private Service service1;
// Constructor
public Foo(Service service1) {
this.service1 = service1;
}
}
在第二个示例中可以创建相同的issuse,但是通过在构造函数中拥有所有依赖关系,它使开发人员查看代码所使用的内容以及从一开始就已经创建的服务更加明显。
Code Injection
取决于上下文可能有不同的含义。
例如,在security
上下文中,它可能意味着将恶意代码注入到您的应用程序中(例如sql-injection)。
在其他上下文中(例如面向方面的编程),它可能意味着用一个方面的补充代码来修补方法。
依赖注入是不同的,它意味着一部分代码(例如一个类)能够以模块化的方式访问依赖关系(代码的其他部分,例如其他类),而不用硬编码(所以他们可以根据需要改变或被自动覆盖,或甚至在另一时间加载)
链接地址: http://www.djcxy.com/p/14411.html