zoukankan      html  css  js  c++  java
  • spring IOC

    一、什么是Spring IOC 容器?

    控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。

    二、控制反转(IoC)有什么作用

    1.管理对象的创建和依赖关系的维护。对象的创建并不是一件简单的事,在对象关系比较复杂时,如果依赖关系需要程序猿来维护的话,那是相当头疼的

    2.解耦,由容器去维护具体的对象

    3.托管了类的产生过程,比如我们需要在类的产生过程中做一些处理,最直接的例子就是代理,如果有容器程序可以把这部分处理交给容器,应用程序则无需去关心类是如何完成代理的

    三、IOC的优点是什么?

    • IOC 或 依赖注入把应用的代码量降到最低。
    • 它使应用容易测试,单元测试不再需要单例和JNDI查找机制。
    • 最小的代价和最小的侵入性使松散耦合得以实现。
    • IOC容器支持加载服务时的饿汉式初始化和懒加载。

    四、Spring IoC 的实现机制

    Spring 中的 IoC 的实现原理就是工厂模式加反射机制。

    反射:

    Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

    interface Fruit {
       public abstract void eat();
     }
    
    class Apple implements Fruit {
        public void eat(){
            System.out.println("Apple");
        }
    }
    
    class Orange implements Fruit {
        public void eat(){
            System.out.println("Orange");
        }
    }
    
    class Factory {
        public static Fruit getInstance(String ClassName) {
            Fruit f=null;
            try {
                f=(Fruit)Class.forName(ClassName).newInstance();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return f;
        }
    }
    
    class Client {
        public static void main(String[] a) {
            Fruit f=Factory.getInstance("io.github.dunwu.spring.Apple");
            if(f!=null){
                f.eat();
            }
        }
    }
    View Code

    五、在IOC容器中配置bean

    https://blog.csdn.net/bakk0615/article/details/101613798

    六、spring中bean的生命周期

    1. ApplicationContext 在初始化上下文时实例化所有单例的 Bean;
    2. 为bean注入属性;
    3. 调用初始化方法;
    4. bean的使用;
    5. IOC容器关闭时,调用销毁方法;

  • 相关阅读:
    Socket网络通信之数据传递
    多线程中join()的用法
    JAVA多线程实现的三种方式
    通过读取配置文件,启动mongodb
    利用ajax获取网页表单数据,并存储到数据库之二(使用SSH)
    利用ajax获取网页表单数据,并存储到数据库之一(使用JDBC)
    Null reference pointer was passed to the stub when not debugging with IE
    代码生成了解
    Linq to sql 入门
    SharePoint 2013 入门
  • 原文地址:https://www.cnblogs.com/jingpeng77/p/13032982.html
Copyright © 2011-2022 走看看