zoukankan      html  css  js  c++  java
  • Spring学习(一) IOC容器学习

    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企业应用开发实战>>
  • 相关阅读:
    [leetcode] Longest Palindromic Substring
    [leetcode] Add Two Numbers
    [leetcode] Longest Substring Without Repeating Characters
    [leetcode] Median of Two Sorted Arrays
    [leetcode] Two Sum
    poj 2718 Smallest Difference
    AOJ 0525 Osenbei
    poj3190 stall revertation
    poj1328Radar Installation
    poj 2376 Cleaning Shifts
  • 原文地址:https://www.cnblogs.com/chenfan29/p/10492116.html
Copyright © 2011-2022 走看看