Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于简单java类中的依赖注入原理_Java - Fatal编程技术网

关于简单java类中的依赖注入原理

关于简单java类中的依赖注入原理,java,Java,请通过简单的java类向我展示一个依赖注入原理的小例子,虽然我已经看透了spring,但是如果我需要用简单的java类术语来解释它,那么您可以通过一个简单的例子向我展示它吗。提前感谢。本文有一个使用注释的非常好的基本java示例 这里通过简单的Java示例非常清楚地介绍了DI的基础知识 使用依赖项注入时,依赖容器注入对象依赖项,而不是在执行过程中自己创建依赖项。例如: 如果不使用依赖项注入,我将不得不编写如下内容: public class ATMTransferService {

请通过简单的java类向我展示一个依赖注入原理的小例子,虽然我已经看透了spring,但是如果我需要用简单的java类术语来解释它,那么您可以通过一个简单的例子向我展示它吗。提前感谢。

本文有一个使用注释的非常好的基本java示例

这里通过简单的Java示例非常清楚地介绍了DI的基础知识


使用依赖项注入时,依赖容器注入对象依赖项,而不是在执行过程中自己创建依赖项。例如:

如果不使用依赖项注入,我将不得不编写如下内容:

public class ATMTransferService {

    private AccountDAO accountDAO;

    public void transfer(Account from, Account to){
    AccountDAO accountDAO = new AccountDAO();
    ...Code that transfers money from one account to another and saves it...
    accountDAO.store();
}
请注意,我必须自己实例化accountDAO,获取依赖项的责任由我自己承担

通过使用spring或其他允许DI的框架,我将通过编写以下内容将责任转移到容器:

<bean id="ATMTransfer" class="com.example.ATMTransferService" >
    <property name="accountDAO" ref="AccDAO" />
</bean>

<bean id="AccDAO" class="com.model.AccountDAO">
    <property name="sessionFactory" ref="sessFac"
</bean>

<bean id="sessFac" class="..."
     //Dependencies required for the cration fo session factory.
</bean>
在本例中,我使用了AccountDAO类,但它依赖于SessionFactory。您还可以使用预定义的构造函数,而不是通过在xml配置中指定默认构造函数来使用它


我希望我没有把它简化太多,一旦依赖注入的好处大于此,您就可以通过修改xml配置来交换实现类。一旦从业务类中删除依赖项创建代码,您还可以获得更干净的代码。这确实是促进面向接口编程的一种很好的方式。

无论是依赖注入还是控制反转,都没有听说过依赖反转yet@EranMedan..yeah我已经编辑了它,它是依赖注入,有一个概念依赖反转". . 不过,这和DI或IoC不一样。@ToddMurray谢谢,我每天都学到一些新的东西…我在寻找简单的java类术语本身。。!!这两个链接都有最基本的Java类示例,不知道您的意思是什么?如果我要粘贴整篇文章,我不喜欢复制粘贴一篇好文章的想法。请解释一下你遗漏了什么?
public void transfer(Account from, Account to){
    ...Code that transfers money from one account to another and saves it...
    accountDAO.store();
}