依赖注入怎么写( 四 )


<bean id="id1" class="A"><property name="B" ref="id2"></bean>
<bean id="id2" class="B"></bean>; , 就是在类A里原来需要new 的地方就不需要写了 , 
6.spring的依赖注入怎么注入的创建编写测试Demo使用的工程 , 并导入Spring调用所需要的jar包 。
创建接口类 。
编写ProductDaoImp类 , 实现ProductDao接口 。
编写ProductManage类 , 实现set方法 , 以注入ProductDaoImp类 。
修改applicationContext.xml文件 , 添加红框中的代码 。
编写测试用主类 。
7
执行主类 , 查看执行结果 。可见测试Demo已经成功!
7.请高手通俗解释一下"依赖注入"依赖注入就是使类型之间的依赖关系可配置 , 也就是在运行时通过配置文件等手段确定类型之间的依赖关系 。
而没有使用依赖注入的时候类型之间的关系是硬编码在程序中的 。例如某个地方写了个new SqlDBReader();那么除非改源代码否则只能使用Sql Data Reader 。使用依赖注入的话是CreateDBReader();//返回一个IDBReader接口实例
至于CreateDBReader这个方法创建的是OLEDB Reader还是Sql DB Reader就要看类置文件中是怎么配置的 。
这样即为程序对DBReader类型的依赖被通过配置文件的方式在运行时注入到程序中去 , 简称依赖注入 。
搂主可以研究一下企业库4.0里面的Unity应用程序块 , 就是实现这个功能的 。依赖注入从另一个角度看 , 就是某些开发框架所提供的一种功能 , 用一段时间就明白了 。
我觉得IOC和依赖注入就是一个东西 , 只不过是从不同的角度描述 , 不过也有很多牛人说它们有区别 。
8.多个spring配置文件依赖注入要怎么写主要有两种方式: 1、在一个配置文件中使用import标签导入其他配置文件 , 即 applicationContext.xml中部分代码如下:2、在web.xml中配置Spring配置文件处导入多个配置文件 , 即可 a、导入多个配置文件 web.xml部分代码如下: contextConfigLocation applicationContext-core.xml, applicationContext-dao.xml, applicationContext-service.xml, applicationContext-action.xml b、使用*通配符导入多个配置文件 web.xml部分代码如下: contextConfigLocation applicationContext-*.xml
9.依赖注入这个词怎么理解个例子 , 组件A中有类ClassA , 组件B中有接口IB和其对应的实现类B1和B2 。
那么 , 现在ClassA需要利用IB接口来做一些事情 , 例如:public class ClassA { public void DoSomething() { IB b = ??? b.DoWork(); }}现在的问题来了 , IB b = ??? 中这三个???要写什么代码?是要写成 IB b = new B1() , 还是要写成IB b = new B2() ?不管是哪一种 , 都会让ClassA强依赖于IB的实现 。在上面这种方案中 , ClassA通过new一个B1或B2来实现对IB的依赖的获取 , 换句话说 , ClassA在主动获取依赖 。
这样的设计会让ClassA很难扩展 , 那我们要改良设计:使用依赖注入 。上面说到了 , 问题出在new这里 , 也就是依赖是Class去主动获取的 , 那我们就要解决这个问题:不要去主动获取对IB的依赖(通过new) , 而让这个依赖从ClassA的外面“注入”进来 。
注入有多种方式 , 比较常用的一种是通过构造函数注入 , 那么 , 我们要把ClassA改成:public class ClassA { private IB b; public ClassA(IB b) { this.b = b; } public DoSomething() { this.b.DoWork(); }}可以看到 , 通过把IB这个依赖从构造函数中“注”进来后 , ClassA就不依赖IB的实现了 。还可以发现 , 这个重构过程中 , 我们是把"ClassA主动获取对IB的依赖”变成“把对IB的依赖从外部注入到ClassA中” , 依赖的方向反转了 , 所以 , 依赖注入又称“控制反转” 。