zoukankan      html  css  js  c++  java
  • Spring核心IOC

    Spring核心IOC

    spring 框架的优点:

    • 解耦
    • 简化开发
    • 便于集成

    核心原理:控制反转是思想,依赖注入是实现控制反转的具体方法

    控制反转

    正常代码,A类中需要使用B类对象进行一些操作时,需要以下代码

    public class A{
    	// 实例化一个B对象
    	B b = new B();
    	// 调用B中方法进行操作
    	b.methodInBClass();
    }
    

    这样的调用方式,称之为正转,也就是说:

    由资源的使用类(A类),来控制资源类(B类)的实例化,进行资源的使用方式,被称为正转

    这样的代码,耦合性会很高,当资源使用类需要使用大量的资源,并且资源和资源之间又存在相互依赖的关系时,你的代码可能会变成下面这样:

    public class A{
        H h = new H();
        M m = new M();
        F f = new F(h,m);
        
        D d = new D();
        G g = new G();
    	C c = new C(d,g,f);
      
        
    	// 实例化一个B对象,B对象的实例化依赖C,C又依赖于其他对象....
    	B b = new B(c);
       
    	b.methodInBClass();
    }
    

    明明是只想调用B类来完成一件事,但实际上大部分代码都在创建各种资源对象

    下面就轮到spring出场了,只需要以下代码就可以完成上述代码同样的功能:

    public class A{
    	@Autowired
        private B b;
       
    	b.methodInBClass();
    }
    

    是不是一下子就变的简单,清楚明了了呢?

    重点是:不需要A类来进行B类的实例化了,不用在A类中对B类对象的各种依赖进行创建和管理了,把资源的控制权由A类转移到了Spring容器中,这就是控制反转。

    依赖注入

    不通过 new() 的方式在类内部创建依赖类对象,而是将依赖的类对象在外部创建好之后,通过构造函数、函数参数等方式传递(或注入)给类使用。

    依赖注入的方式:

    • setter方法注入
    • 构造方法注入
  • 相关阅读:
    [zz]struct epoll_event
    [zz]libev 简介
    [zz]红黑树
    [zz]leveldb 实现原理
    [zz]使用 libevent 和 libev 提高网络应用性能
    [zz]AVL树
    [zz]do...while(0)的妙用
    Mybatis中的缓存简介
    Spring框架的介绍
    ThreadLocal
  • 原文地址:https://www.cnblogs.com/strive-for-life/p/13618282.html
Copyright © 2011-2022 走看看