1. 程式人生 > >Spring學習(一) IOC容器學習

Spring學習(一) IOC容器學習

ext new 精通 sse lombok 對象 ima 屬性 趙麗穎

  1. spring IOC (反轉控制) ==DI(依賴註入) == BeanFactory
  2. DI的概念:DI:既讓調用類對某一接口實現類的依賴由第三方註入,以移除調用類對某一接口實現類的依賴
  3. IOC的註入方式:構造\屬性\接口註入
  4. Spring底層是通過java反射機制進行依賴註入的.
  5. BeanFactory是Spring的基礎設施,面向Spring本身;SpplicationContext面向使用Spring框架的開發者
  6. BeanFactory在初始化容器的時,並未實例化,只要第一次訪問某個bean時才實例化目標Bean.
  7. ApplicationContext 也就是Spring容器;ApplicationContext的初始化應用上下文時就實例化所有單實例的bean.

  8. 技術分享圖片 圖一詳解描述: 圖一中有4個對象,分別是劇本,劇本導演,劇本角色,角色演員. 那麽他們之間的關系是怎麽樣的呢?導演選擇劇本,劇本存在角色,角色決定演員. 那麽我們用常規的代碼實現是如何實現的呢? 註:這邊為了代碼的整理,使用了lombok的@Data註解,這個註解 會給標識的類自動構建get,set方法以及無參的構造函數等.
    /**
    * 劇本類
    * @author 胖橘
    *
    */
    @Data
    public class Script {
              private Integer id;
              private Integer scriptName;  //劇本名稱
    }
    

      

    /**
    * 導演類
    * @author 胖橘
    *
    */
    @Data
    public class Regisseur {
              private  Integer id;
              private  String regisseurName;//導演名字
              private Integer scriptId; //劇本id
    }
    

      

    /**
    * 角色類
    * @author 胖橘
    *
    */
    @Data
    public class Role {
              private Integer id;
              private String roleName;//角色名稱
              private Integer scriptId;//劇本id
    }
    

      

    /**
    * 演員類
    * @author 胖橘
    *
    */
    @Data
    public class Actor {
              private Integer id;
              private String  actorName;//演員名字
              private Integer roleId;//角色名字
    }
    

      

    public class Test {
         public static void main(String[] args) {
              //創建<<知否劇本>>
              Script script=new Script();
              script.setId(1);
              script.setScriptName("知否");
              
              //創建劇本中的女主角明蘭
              Role role=new Role();
              role.setId(1);
              role.setRoleName("明蘭");
              role.setScriptId(1);
              
              //創建想拍這部劇本的導演
              Regisseur regisseur=new Regisseur();
              regisseur.setId(1);
              regisseur.setRegisseurName("張開宙");
              regisseur.setScriptId(1);
              
              //確定劇本女主角演員
              Actor actor=new Actor();
              actor.setId(1);
              actor.setActorName("趙麗穎");
              actor.setRoleId(1);
              
              
         }
    }
    

     

    我們會發現Test中的例子,控制權是在劇本手中的,導演挑選了劇本,劇本控制了角色,角色控制了演員. 而SpringIOC做的事情 就是控制反轉,也就是由導演去決定劇本,導演決定角色,導演去決定誰來演這部劇.
    之前在劇本手中的控制,現在就到了導演手中了.這就是控制反轉. 以上均摘自於<<精通Spring4.x企業應用開發實戰>>

Spring學習(一) IOC容器學習