Spring IOC 和 DI

(1)什么是IOC(Inversion Of Control 控制反转)?

对象之间的依赖关系应该由容器来建立。

(2)什么是DI(Dependency Injection 依赖注入)?

容器可以通过调用set方法或者构造器来建立对象之间的依赖关系。

注:IOC是目标,DI是手段。

(3)使用set方法来注入

配置set方法注入。property元素的name属性用于指定set方法名(首字母大写,前面添加set),ref属性用于指定被注入的bean的id。

<bean id="a1" class="ioc.A">

  <property name="b" ref="b1"/>

</bean>

(4)使用构造器来注入

<bean id="wt1" class="ioc.Waiter"/>

配置构造器注入。constructor-arg的index属性用来指定参数的下标,ref属性用来指定被注入的bean的id。

<bean id="rest1" class="ioc.Restaurant">

  <constructor-arg index="0" ref="wt1"/>

</bean>

(5)自动装配

a.自动装配指的是,容器按照某种规则,自动建立对象之间的依赖关系。

即不用明确指定被注入的bean的id,容器底层仍然需要调用set方法或者构造器来完成依赖关系的建立。

b.容器默认情况下,是不会自动装配的。

<bean id="eg1" class="autowire.Enginee"/>

autowire属性用于指定自动装配的方式,有三个值:

byName: 容器以属性名作为bean的id来查找对应的bean,找到之后,调用set方法来完成注入。

注:如果找不到对应的bean,则不注入。

byType:容器以属性类型作为bean的类型来查找对应的bean,找到之后,调用set方法来完成注入。

注:如果找不到对应的bean,则不注入。如果找到多个,则会出错。

constructor:类似byType,只不过调用构造器来完成注入。

<bean id="car" class="autowire.Car" autowire="byType"/>

(6)注入基本类型的值

注入基本类型的值(包括String),使用value属性。

注入基本类型的值(包括String),使用value属性。

<bean id="vb1" class="value.ValueBean">
    <property name="name" value="花花"/>
    <property name="age" value="20"/>
</bean>

(7)注入集合类型的值

    <bean id="vb1" class="value.ValueBean">
        <property name="name" value="花花"/>
        <property name="age" value="20"/>
        <property name="interest">
            <list>
                <value>钓鱼</value>
                <value>做饭</value>
                <value>看电视</value>
                <value>看电视</value>
            </list>
        </property>
        <property name="city">
            <set>
                <value>北京</value>
                <value>洛阳</value>
                <value>南京</value>
            </set>
        </property>
        <property name="score">
            <map>
                <entry key="english" value="60"/>
                <entry key="math" value="1"/>
            </map>
        </property>
        <property name="db">
            <props>
                <prop key="username">Tom</prop>
                <prop key="password">1234</prop>
            </props>
        </property>
    </bean>

(8)引用的方式注入集合类型的值

    <util:list id="interestBean">
        <value>抽烟</value>
        <value>喝酒</value>
        <value>烫头</value>
    </util:list>
    <util:set id="cityBean">
        <value>长沙</value>
        <value>岳阳</value>
        <value>华容</value>
    </util:set>
    <util:map id="scoreBean">
        <entry key="english" value="90"/>
        <entry key="math" value="80"/>
    </util:map>
    <util:properties id="dbBean">
        <prop key="username">Sally</prop>
        <prop key="password">test</prop>
    </util:properties>
    <bean id="vb2" class="value.ValueBean">
        <property name="interest" ref="interestBean"/>
        <property name="city" ref="cityBean"/>
        <property name="score" ref="scoreBean"/>
        <property name="db" ref="dbBean"/>
    </bean>

(9)读取properties文件的内容

读取.properties文件的内容。location属性指定properties文件的位置,容器会读取指定文件的内容,然后将这些内容添加到了Properties对象里面。

<util:properties id="config" location="classpath:config.properties"/>

(10)Spring表达式

原文地址:https://www.cnblogs.com/wood-life/p/10289053.html

时间: 2024-08-04 05:30:39

Spring IOC 和 DI的相关文章

Spring Ioc、DI

Spring Ioc.DI 一.BeanDefinition从xml中诞生 二.获取BeanDefinition体系图 三.xml方式setter注入 TODO 四.xml方式构造器注入 TODO 五.注解获取ScannedGenericBeanDefinition 六.注解方式设置属性值 原文地址:https://www.cnblogs.com/zomicc/p/12240708.html

Spring IoC和DI

概念 IoC:Inversion of Control .控制反转,是一种设计思想.spring中的实现为 IoC容器,分为两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,另一个是实现ApplicationContext接口的高级容器系列. DI:Dependency Injection.依赖注入. 对于像我一样的初学者,总是对IoC和DI的概念有着模糊不清的认识.今天我就梳理一下我的理解,努力将这两个概念描述清楚. IOC Q:控制反转首先说的是什么控制被反转了? A:

Spring IOC(DI)

1 什么是IOC IOC—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制. 2 IOC和DI DI—Dependency Injection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中.依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活.可扩展的平台.通过依赖

Spring的学习二(Spring Ioc和DI,AOP简介)

一:Spring Ioc,DI,AOP简介 IOC控制反转:将原本在程序中手动创建对象的控制权,交由Spring框架来管理 原理: 读取标注或者配置文件,看看Shoe依赖的是哪个Source,拿到类名 使用反射的API,基于类名实例化对应的对象实例 将对象实例,通过构造函数或者 setter,传递给 ShoeShop 以前是我们自己new对象(自己买材料,工具自己做鞋子),现在只要告诉IOC这个容器(鞋店),他自动给你new好,你直接取对象就好了,省去了我们自己new对象的过程 DI:依赖注入:

Spring IOC、DI过程分析

详情参阅:https://www.cnblogs.com/ITtangtang/p/3978349.html 以下为简摘. 主要过程: 定位:classpath.filesystem.network等 加载:读入后创建成BeanDefinition 注册:根据BeanDefinition创建Bean对象并注册到IOC容器(即ApplicationContext) 依赖注入:对Bean中依赖其他Bean实例的属性赋值(AbstractAutoWireCapableBeanFactory.popul

Spring IoC、DI入门小程序

Alt+/智能提示xml配置文件节点及属性:在接口上使用Ctrl+T可以提示其实现类 一.IoC控制反转(将创建对象的权利交给spring)入门小程序 1.引入jar包 2.工程基本结构 3.新建UserService类 package hjp.spring.demo1; import org.junit.Test; public class UserService { public void addUser() { System.out.println("addUser"); } }

spring ioc DI 理解

下面是我从网上找来的一些大牛对spring ioc和DI的理解,希望也能让你对Spring ioc和DI的设计思想有更进一步的认识. 一.分享Iteye的开涛对Ioc的精彩讲解 Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制.如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们

用IDEA详解Spring中的IoC和DI(挺透彻的,点进来看看吧)

用IDEA详解Spring中的IoC和DI 一.Spring IoC的基本概念 控制反转(IoC)是一个比较抽象的概念,它主要用来消减计算机程序的耦合问题,是Spring框架的核心.依赖注入(DI)是IoC的另外一种说法,只是从不同的角度描述相同的概念.看完这两句,是不是不但没懂,反而更迷惑了,别急,往下看: IoC的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 如果我们打开机械式手表的后盖,就会看到与

Spring4学习笔记1-HelloWorld与IOC和DI概述

1.安装环境 1.1安装eclipse,jdk 1.1安装Spring tool suite(非必要项) 2.spring HelloWorld 2.1 需要的jar包(spring官网下载:https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework/spring) common-logging.jar(到apache官网下载) spring-beans-