两段代码让你快速彻底弄清springMVC框架中的依赖注入的概念

假设一种这样的场景:A类中的一个方法需要用到B中的方法
实现这个场景要经过两个步骤
  1 创建一个B的实例
  2 基于这个实例调用B中的需要的方法
  如下代码所示:
public class A {
     poublic void importantMethod(){
       B b = .....// get an instance of B // 创建一个B 的实例
      
       b.userfulMehtod();// 基于该实例调用B中的方法
       ...
     }
}
接下来的问题是如何创建B的实例? new么? 可如果B不是一个具体实现类而是一个接口怎么办??
好像不太好吧
还好
这件事请 让依赖注入给做了

我们是这么做的
public class A {
   //1 在这里先声明ta
   private B b;
   
   public void importantMethod(){
       //no need to worry about creating B anymore
       // B b = ...//get an instanch of B 
       //2 在这里直接使用哪个有效的方法
       b.usefulMthod();
       ...
   }
       //3 然后在这里再写一个set方法
           //这个方法会被框架调用 一旦调用 一个B的实例就被注入进来了
   public void setB(B b){
       this.b = b;
   }

}


当然也可以这么做:

public class A {
   //1 在这里先声明ta
   private B b;
   //2 在这里写一个构造函数(这个构造方法会被框架调用,调用之后,一个B的实例就被注入到A类中了)
   public A(B b){
      this.b = b;
   }

   public void importantMethod(){
      //no need to worry about creating B anymore
      // B b = ...//get an instance of B
      // 3 在这里就可以直接通过定义好的b使用B中的那个有用的方法了
      b.usefulMethod();
      ...
   }
  
}

还可以这么做:

public calss A {

     //1 注解@Autowired

     @Autowired

   // 2 声明ta

    private B b;

  public void  ImportantMethod(){

     //这里直接用就可以了

    b.usefulMethod();

      ......

   }

}

猜你喜欢

转载自blog.csdn.net/weixin_42204641/article/details/81096095