`
youyu4
  • 浏览: 440521 次
社区版块
存档分类
最新评论

spring Ioc的原理

 
阅读更多

spring Ioc的原理

 

要了解Ioc,首先要了解的概念

 

控制反转(Inversion of Control ,Ioc)

应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护由外部容器来负责。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。

 

依赖注入(Dependency Injection)

在运行期间,有外部容器动态地将依赖对象注入到组件中(构造方法和set方法)

 

 

bean中包含了什么

一个Bean包括id,type,和Properties。

 

基本配置如下:

 

<bean id="test" class="Test">   
        <property name="testMap">   
            <map>   
                <entry key="a">   
                    <value>1</value>   
                </entry>   
                <entry key="b">   
                    <value>2</value>   
                </entry>   
            </map>   
        </property>   
    </bean>  

 

 

 

 

Ioc的核心就是Java的反射机制

 

首先通过反射实例化一个类

 

public static Object newInstance(String className) {   
        Class<?> cls = null;   
        Object obj = null;   
        try {   
            cls = Class.forName(className);   
            obj = cls.newInstance();   
        } catch (ClassNotFoundException e) {   
            throw new RuntimeException(e);   
        } catch (InstantiationException e) {   
            throw new RuntimeException(e);   
        } catch (IllegalAccessException e) {   
            throw new RuntimeException(e);   
        }   
        return obj;   
    }  

 

 

将依赖注入进去

 

public static void setProperty(Object obj, String name, String value) {   
        Class<? extends Object> clazz = obj.getClass();   
        try {   
            String methodName = returnSetMthodName(name);   
            Method[] ms = clazz.getMethods();   
            for (Method m : ms) {   
                if (m.getName().equals(methodName)) {   
                    if (m.getParameterTypes().length == 1) {   
                        Class<?> clazzParameterType = m.getParameterTypes()[0];   
                        setFieldValue(clazzParameterType.getName(), value, m,   
                                obj);   
                        break;   
                    }   
                }   
            }   
        } catch (SecurityException e) {   
            throw new RuntimeException(e);   
        } catch (IllegalArgumentException e) {   
            throw new RuntimeException(e);   
        } catch (IllegalAccessException e) {   
            throw new RuntimeException(e);   
        } catch (InvocationTargetException e) {   
            throw new RuntimeException(e);   
        }   
}  

 

 

 

 

反射机制的核心代码

Class<?> cls = Class.forName(className);   

Object obj = cls.newInstance();  

 

分享到:
评论

相关推荐

    springIoc实现原理

    **Spring Ioc 实现原理详解** Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中对象的创建和管理方式。在传统的软件设计中,对象的创建和依赖关系的维护通常由...

    Spring IOC原理

    Spring IOC原理,类的继承关系,依赖注入和控制反转等关系

    spring ioc原理

    spring ioc原理

    SpringIOC原理实现

    在这个例子中,我们将通过导入Excel数据来深入理解Spring IOC的工作原理,并探讨如何自定义实现。 1. **控制反转**:在传统的编程模式中,我们经常手动创建和管理对象,但在Spring中,对象的创建、初始化、依赖关系...

    springIOC原理

    springIOC原理,深入解剖spring核心ioc技术

    Spring IOC原理详解

    Spring IOC原理详解 Spring IOC(Inversion of Control,控制反转)是 Spring 框架的核心概念,它解决了对象之间的耦合问题,实现了松耦合编程。IOC 的思想是,Spring 容器来实现对象之间的创建、协调工作,而不是...

    Spring IOC 原理 ,Java 反射实例,自定义注解

    理解Spring的IOC原理,首先要了解依赖注入(Dependency Injection,DI)的概念。DI允许对象在运行时通过配置或编程方式获取其依赖,而不是在代码内部硬编码这些依赖。 在Spring中,容器使用Java的反射机制来实现DI...

    spring ioc和aop原理流程图(详细)

    Spring 框架是Java开发中的核心框架,它主要由两个关键部分组成:IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。这两个概念是Spring框架的核心特性,极大地简化了企业...

    手写IOC项目,学习理解Spring IOC原理

    我们都知道,Spring框架的IOC是基于Java的反射机制实现,实现IOC,必须掌握反射的实践方法。Java反射机制是在运行状态中,对于任意类,都能够知道这个类的属性和方法;对于任何一个对象,都能够调用它的任意方法和...

    Spring的IOC原理

    **Spring的IOC原理详解** **一、IoC理论背景** 在面向对象的软件设计中,对象间的耦合是不可避免的,它们通过相互合作实现业务逻辑。这种耦合就像机械手表中的齿轮,彼此啮合共同完成任务。随着软件系统规模的扩大...

    简单谈谈Spring Ioc原理解析

    Spring的IoC(控制反转)和DI(依赖注入)是其核心设计理念,它们极大地简化了Java应用程序的开发,特别是企业级应用。IoC的核心思想是将对象的创建和管理权交给了Spring容器,而不是由对象自身负责。这使得对象间的...

    简单实现Spring的IOC原理详解

    简单实现Spring的IOC原理详解 Spring IOC(Inversion of Control,控制反转)是一种软件设计模式,它将对象的创建和管理交给容器,实现了对象之间的解耦合。Spring IOC容器是Spring框架的核心,用于管理应用程序中...

    SpringIoc示例代码

    首先,让我们了解一下Spring IOC的基本原理。Spring IOC容器通过XML配置文件或者基于注解的方式,定义了对象的生命周期和依赖关系。开发者不再需要手动创建对象,而是声明对象及其依赖,然后由Spring容器负责实例化...

    spring ioc思维导图源文件

    下面将详细介绍Spring IOC的基本概念、工作原理以及相关知识点。 **1. Spring IOC基本概念** - **控制反转(IOC)**:传统程序设计中,对象的创建和依赖关系由代码直接控制。而在Spring IOC中,这种控制权被反转,...

    spring ioc

    在本文中,我们将深入探讨 Spring IOC 的概念、工作原理以及如何在实际项目中应用。 首先,理解 IOC 的概念至关重要。IOC 是一种设计模式,它将对象的创建和管理权反转,由框架负责管理对象的生命周期,而不是由...

    SpringIOC经典Demo

    Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它极大地简化了Java应用的开发,通过将对象的创建...通过学习和理解这个项目,你可以深入掌握Spring IOC的核心原理,并将其应用到自己的项目中。

    Spring IOC实现原理demo

    在本文中,我们将深入探讨Spring IOC的实现原理,并通过一个简单的示例来展示其工作流程。 首先,我们需要理解什么是控制反转。在传统的编程模式中,程序员手动创建并管理对象,而Spring IOC则将这种控制权反转,由...

    Spring IOC设计原理解析.docx

    Spring IOC(Inversion of Control,控制反转)设计原理解析 一、什么是IOC/DI? IOC,即控制反转,是软件设计模式中的一种,它将对象的创建和管理权交给了框架,而不是由对象自身负责。DI(Dependency Injection,...

    Spring IoC源码深度剖析开源架构源码2021.pdf

    综上所述,文档《Spring IoC源码深度剖析开源架构源码2021.pdf》的知识点聚焦于Spring框架中IoC容器的实现原理,以及如何通过阅读源码来提升对Spring框架乃至整个Java开源生态的理解和应用能力。通过逐步深入到源码...

Global site tag (gtag.js) - Google Analytics