`

Spring基础:IoC容器(2)

阅读更多
容器注入类型

最常见的注入类型是字面值注入,像String和基本类型的包装类在Spring中都是有属性编辑器帮助注入的。另外还有对象的注入,集合类的注入。

1.字面值
所谓字面值,一般是指可用字符串表示的值,这些值可以通过<value>元素标签进行注入。在默认情况下,基本数据类型及其封装类,String等类型都可以采取字面值注入的方式。
<bean id="car" class="com.firethewhole.maventest06.attr.Car">
    <property name="maxSpeed">
        <value>200</value>
    </property>
    <property name="brand">
        <value><![CDATA[红旗&CA72]]></value>
    </property>
    <property name="price">
        <value>2000.00</value>
    </property>
</bean>


****在XML中表示"<",">","&","""(双引号),"'"(单引号)这些的时候,要么使用<![CDATA[]]>包起来,要么使用转义序列。
特殊符号转义序列
<&lt;
>&gt;
&&amp;
"&quot;
'&apos;


2.引用其他Bean
<bean id="boss" class="com.firethewhole.maventest06.attr.Boss">
    <property name="car">
        <ref bean="car"/>
    </property>
</bean>

<ref>元素可以通过以下三个属性引用容器中其他Bean。
  • bean:引用同一容器或父容器的Bean。
  • local:只能引用同一配置文件中的Bean。
  • parent:引用父容器中的Bean。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans spring-beans-4.1.xsd">    
    <bean id="car" class="com.firethewhole.maventest06.attr.Car">
        <property name="brand" value="吉利CT5" />
        <property name="maxSpeed" value="100" />
        <property name="price" value="1000.00" />
    </bean>
    
    <bean id="boss2" class="com.firethewhole.maventest06.attr.Boss">
        <property name="car">
            <ref parent="car"/>
        </property>
    </bean>
</beans>

ApplicationContext ctx = new ClassPathXmlApplicationContext("beans1.xml");
ApplicationContext child = new ClassPathXmlApplicationContext(new String[] { "beans2.xml" }, ctx);
Boss boss2 = (Boss) child.getBean("boss2");
boss2.introduce();


3.引用内部Bean
<bean id="boss3" class="com.firethewhole.maventest06.attr.Boss">
    <property name="car">
        <bean class="com.firethewhole.maventest06.attr.Car">
            <property name="maxSpeed" value="300"/>
            <property name="brand" value="雷克萨斯"/>
            <property name="price" value="90000.00"/>
        </bean>
    </property>
</bean>


4.引用null值
如果确实要引入null值的话,需要使用标签<null/>

5.集合类型
主要有List,Set,Map,Props
<bean id="boss4" class="com.firethewhole.maventest06.attr.AnotherBoss">
    <property name="favorites">
        <list>
            <value>看报</value>
            <value>赛车</value>
            <value>高尔夫</value>
        </list>
    </property>
    <property name="jobs">
        <map>
            <entry>
                <key><value>AM</value></key>
                <value>会见客户</value>
            </entry>
            <entry>
                <key><value>PM</value></key>
                <value>公司内部会议</value>
            </entry>
        </map>
    </property>
    <property name="mails">
        <props>
            <prop key="jobMail">john-office@baobaotao.com</prop>
            <prop key="lifeMail">john-life@baobaotao.com</prop>
        </props>
    </property>
    <property name="jobTimes">
        <map>
            <entry>
                <key><value>会见客户</value></key>
                <value>124</value>
            </entry>
        </map>
    </property>
</bean>

****如果属性为Set类型,可以在配置文件中yong<set>替换掉<list>,泛型的集合类会判断注入类型,自动进行类型转换。

6.集合合并
这一块暂时跳过不写。

7.注入集合类型的Bean
如果希望注入集合类型的Bean,而不是集合类型的属性,则需要通过util命名空间进行配置。比如声明了集合类型的Bean之后,可以在属性中直接引用,不用采用上面的内部Bean的配置方式了。
引入命名空间xmlns:util="http://www.springframework.org/schema/util"
<util:list id="favoritieList" list-class="java.util.LinkedList">
    <value>看报</value>个
    <value>赛车</value>
    <value>高尔夫</value>
</util:list>
<util:set id="favoriteSet">
    <value>看报</value>
    <value>赛车</value>
    <value>高尔夫</value>
</util:set>
<util:map id="emailMap">
    <entry key="AM" value="会见客户"/>
    <entry key="PM" value="公司内部会议"/>
</util:map>

此外<util:list><util:set>还支持value-type,用于指定集合中元素的类型。<util:map>还支持key-type和value-type,指定Map中键和值的类型。
分享到:
评论

相关推荐

    Spring基础:IoC容器(1)

    在“Spring基础:IoC容器(1)”这个主题中,我们将深入探讨Spring的核心组件——IoC容器,以及它如何管理对象的生命周期和依赖关系。 IoC(Inversion of Control),也称为控制反转,是一种设计模式,它将对象的创建...

    Spring源代码解析(一):IOC容器.doc

    在Spring源代码解析的第一部分,我们将聚焦于IOC容器,特别是BeanFactory接口,它是所有Spring容器的基础。 BeanFactory接口是Spring的基石,它定义了基本的容器操作,如获取Bean、检查Bean是否存在、确定Bean的...

    Spring源代码解析(二):IoC容器在Web容器中的启动.doc

    当我们在Web环境中运行Spring应用时,IoC容器需要在Web容器(如Tomcat、Jetty等)中启动并运行。这个过程涉及到一系列的初始化步骤,确保Spring能够正确地与Web容器集成。 首先,`WebApplicationContext`是`...

    Spring中IoC优点与缺点解析

    IoC(Inversion of Control)是 Spring 框架中的一种设计模式,它的主要思想是将对象的创建和管理交给容器,从而解耦合对象之间的依赖关系。今天,我们将详细解析 IoC 的优点和缺点。 优点 1. 简化对象的创建:IoC ...

    Spring2.5.6源代码分析(一):IOC容器

    IoC容器是Spring框架的心脏,它负责管理对象的生命周期和依赖关系,使得开发者能够实现松耦合和高可测试性的应用程序。 首先,我们来理解什么是IoC。IoC,也被称为依赖注入(Dependency Injection),是一种设计...

    spring Ioc容器配置

    spring Ioc容器配置 IOC容器数据源配置 &lt;!-- 配置数据源 --&gt; destroy-method="close"&gt; &lt;value&gt;org.gjt.mm.mysql.Driver &lt;value&gt;jdbc:mysql://localhost:3306/demo &lt;value&gt;root ...

    Spring IOC容器实现分析.pdf 下载

    总结,Spring的IOC容器是其强大功能的基础,通过控制反转实现了对象的解耦和依赖管理,极大地提高了代码的可维护性和灵活性。理解并熟练运用IOC容器,对于提升Java企业级应用的开发效率具有重要意义。

    Spring的IoC容器

    **Spring的IoC容器详解** Spring框架的核心特性之一是依赖注入(Dependency Injection,简称DI),而实现这一特性的核心组件就是IoC(Inversion of Control)容器。IoC容器是Spring框架的心脏,它负责管理对象的...

    Spring的IoC容器初始化源码解析

    ### Spring的IoC容器初始化源码解析 #### 一、Spring框架的核心——IoC容器 Spring框架是一个开源的轻量级Java开发框架,其核心功能是IoC(Inversion of Control,控制反转)容器和AOP(Aspect Oriented ...

    第四课:IOC容器设计理念与源码解读 (2)1

    【第四课:IOC容器设计理念与源码解读 (2)1】 本课程主要涵盖了IOC(Inversion of Control,控制反转)的核心理论以及实体Bean的创建方式,深入解析了Spring框架中的IOC设计原理。以下是对这些知识点的详细阐述: ...

    Spring实现原理及IoC容器的优点

    本篇文章将深入探讨Spring实现原理,阐述IoC容器的优点,并指导如何在Eclipse中创建一个Spring的Web应用。 首先,让我们理解Spring的核心——IoC容器。IoC是一种设计模式,它改变了对象获取依赖的方式。在传统的...

    手写一个SpringIoc容器

    本项目"手写一个SpringIoc容器"旨在模仿Spring的IOC(Inversion of Control,控制反转)功能,帮助开发者深入理解Spring的工作原理,提升对依赖注入(Dependency Injection)模式的认识。 在实现自定义的Spring IOC...

    Java-Spring-SpringIoC容器-SpringIoC的学习

    在Java Spring框架中,Spring IoC(Inversion of Control,控制反转)是核心特性之一,它使得应用程序的组件之间的依赖关系不再由代码直接管理,而是交由Spring IoC容器负责。这种设计模式降低了代码间的耦合,提高...

    模拟Spring的IoC容器实现注解自动装配

    而注解自动装配(Autowired)是Spring IoC容器的一种高级特性,它允许我们通过注解来声明对象之间的依赖,无需手动编写XML配置。现在,我们将深入探讨如何模拟Spring的IoC容器实现注解自动装配。 首先,我们需要...

    springIoc实现原理

    Spring Ioc容器是整个Spring框架的基石,它负责创建、配置和管理对象。容器通过读取XML、Java注解或Java配置类等方式,获取对象的定义信息,然后根据这些信息实例化对象并进行依赖注入。 **三、依赖注入(DI,...

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

    以下是Spring IOC容器的主要知识点: 1. **Bean的定义**:在Spring中,业务对象被称为Bean。Bean定义包含了创建和管理Bean的所有信息,如类名、属性值、依赖关系等,通常通过XML、注解或Java配置来定义。 2. **...

Global site tag (gtag.js) - Google Analytics