Spring學習(一) IOC容器學習
阿新 • • 發佈:2019-03-08
ext new 精通 sse lombok 對象 ima 屬性 趙麗穎
- spring IOC (反轉控制) ==DI(依賴註入) == BeanFactory
- DI的概念:DI:既讓調用類對某一接口實現類的依賴由第三方註入,以移除調用類對某一接口實現類的依賴
- IOC的註入方式:構造\屬性\接口註入
- Spring底層是通過java反射機制進行依賴註入的.
- BeanFactory是Spring的基礎設施,面向Spring本身;SpplicationContext面向使用Spring框架的開發者
- BeanFactory在初始化容器的時,並未實例化,只要第一次訪問某個bean時才實例化目標Bean.
- ApplicationContext 也就是Spring容器;ApplicationContext的初始化應用上下文時就實例化所有單實例的bean.
圖一詳解描述: 圖一中有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); } }
之前在劇本手中的控制,現在就到了導演手中了.這就是控制反轉. 以上均摘自於<<精通Spring4.x企業應用開發實戰>>
Spring學習(一) IOC容器學習