装配Spring Bean(二)

通过XML配置装配Bean

前面已经用过,使用XML装配Bean需要定义对应的XML,引入对应的XML模式(XSD)文件:

<?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 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
    <!-- Spring Bean配置代码-->
</beans>

1.装配简易值

<bean id="source" class="test3.Source">
        <property name="fruit" value="橙汁"/>
        <property name="sugar" value="少糖"/>
        <property name="size" value="大杯"/>
    </bean>
    <bean id="juiceMaker" class="test3.JuiceMaker">
        <property name="beverageShop" value="贡茶"/>
        <property name="source" ref="source"/>
    </bean>

2.装配集合

<bean id="complexAssembly" class="test.ComplexAssembly">
        <property name="id" value="1" />
        <property name="list">
            <list>
                <value>value-list-1</value>
                <value>value-list-2</value>
                <value>value-list-3</value>
            </list>
        </property>
        <property name="map">
            <map>
                <entry key="key1" value="value-key-1" />
                <entry key="key2" value="value-key-2" />
                <entry key="key3" value="value-key-3" />
            </map>
        </property>
        <property name="props">
            <props>
                <prop key="prop1">value-prop-1</prop>
                <prop key="prop2">value-prop-2</prop>
                <prop key="prop3">value-prop-3</prop>
            </props>
        </property>
        <property name="set">
            <set>
                <value>value-set-1</value>
                <value>value-set-2</value>
                <value>value-set-3</value>
            </set>
        </property>
        <property name="array">
            <array>
                <value>value-array-1</value>
                <value>value-array-2</value>
                <value>value-array-3</value>
            </array>
        </property>
    </bean>

有时候可能需要更加复杂的装载,比如一个List可以是一个系列类的对象,又如Map集合类,键可以使一个类对象,而值也可以是一个类对象,上代码:

public class Role {
    private int id;
    private String roleName;
    private String note;
//setter getter
}
public class User {
    private Long id;
    private String userName;
    private String note;
//setter getter
}
public class UserRoleAssembly {
    private Long id;
    private List<Role> list;
    private Map<Role,User> map;
    private Set<Role> set;
//setter getter
}

配置用户角色:

<bean id="role1" class="test.Role">
        <property name="id" value="1" />
        <property name="roleName" value="role_name_1" />
        <property name="note" value="role_note_1" />
    </bean>

    <bean id="role2" class="test.Role">
        <property name="id" value="2" />
        <property name="roleName" value="role_name_2" />
        <property name="note" value="role_note_2" />
    </bean>

    <bean id="user1" class="test.User">
        <property name="id" value="1" />
        <property name="userName" value="user_name_1" />
        <property name="note" value="user_note_1" />
    </bean>

    <bean id="user2" class="test.User">
        <property name="id" value="2" />
        <property name="userName" value="user_name_2" />
        <property name="note" value="user_note_2" />
    </bean>

    <bean id="userRoleAssembly" class="test.UserRoleAssembly">
        <property name="id" value="1" />
        <property name="list">
            <list>
                <ref bean="role1" />
                <ref bean="role2" />
            </list>
        </property>
        <property name="map">
            <map>
                <entry key-ref="role1" value-ref="user1" />
                <entry key-ref="role2" value-ref="user2" />
            </map>
        </property>
        <property name="set">
            <set>
                <ref bean="role1" />
                <ref bean="role2" />
            </set>
        </property>
    </bean>

3.命名空间装配

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:c="http://www.springframework.org/schema/c" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    <bean id="role1" class="com.ssm.chapter10.pojo.Role"
    c:_0="1" c:_1="role_name_1" c:_2="role_note_1" />
    <bean id="role2" class="com.ssm.chapter10.pojo.Role"
        p:id="2" p:roleName="role_name_2" p:note="role_note_2" />
    <bean id="user1" class="com.ssm.chapter10.pojo.User"
        p:id="1" p:userName="role_name_1" p:note="user_note_1" />
    <bean id="user2" class="com.ssm.chapter10.pojo.User"
        p:id="2" p:userName="role_name_2" p:note="user_note_2" />

    <util:list id="list">
        <ref bean="role1" />
        <ref bean="role2" />
    </util:list>

    <util:map id="map">
        <entry key-ref="role1" value-ref="user1" />
        <entry key-ref="role2" value-ref="user2" />
    </util:map>

    <util:set id="set">
        <ref bean="role1" />
        <ref bean="role2" />
    </util:set>

    <bean id="userRoleAssembly" class="com.ssm.chapter10.pojo. UserRoleAssembly"
        p:id="1" p:list-ref="list" p:map-ref="map" p:set-ref="set" />
</beans>

原文地址:https://www.cnblogs.com/xc-xinxue/p/12381153.html

时间: 2024-08-07 04:42:39

装配Spring Bean(二)的相关文章

装配Spring Bean(一)

依赖注入的3种方式 1.构造器注入 参数少的时候好用,多了不方便 2.setter注入: Spring中最主流的注入方式,是通过反射调用没有参数的构造方法生成对象(所以确保有无参构造函数),同时通过反射对应的setter注入配置的值. 3.接口注入 有时候资源并非来自于自身系统,而是来自于外界,这是用接口注入 装配Bean概述 如何将自己开发的bean装配到Spring IOC容器中呢?在大部分场景下,我们都会使用ApplicationContext的具体实现类,因为对应的Spring IOC容

Spring学习(二)--装配Bean

一.Spring装配机制 Spring提供了三种主要的装配机制: 1.在XML中进行显示配置 2.在Java中进行显示配置 3.隐式的bean发现机制和自动装配--自动化装配bean Spring可以通过注解来进行自动装配(无需再手动写配置文件),Spring从两个角度实现自动化装配: 1.组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean; 2.自动装配(autowiring):Spring自动满足bean之间的依赖;--以CD及CD播放器为示

【Spring IoC】Spring Bean(二)

一.Spring Bean的定义 被称作 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的.bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象.这些 bean 是由容器提供的配置元数据创建的. bean 定义包含称为配置元数据的信息.主要包括: 如何创建一个 bean bean 的生命周期的详细信息 bean 的依赖关系 每个 bean 可以定义的属性有: class:必填,用来定义类的全限定名(包名+类名).只有子类Bean不用定义该属性

spring bean的作用域和自动装配

1 Bean的作用域 l  singleton单列:整个容器中只有一个对象实例,每次去访问都是访问同一个对象  默认是单列 l  prototype原型: 每次获取bean都产生一个新的对象,比如Action l  request:每次请求时创建一个新的对象 l  session:在会话的范围内是一个对象,http那个session l  global session:只在portlet下有用,表示application l  application:在应用范围内有效 注意:配置action的时

Spring -- Bean自动装配&amp;Bean之间关系&amp;Bean的作用域

Bean的自动装配 Spring IOC 容器可以自动装配 Bean. 需要做的仅仅是在 的 autowire 属性里指定自动装配的模式 有以下几种自动装配的类型: byType(根据类型自动装配): 若 IOC 容器中有多个与目标 Bean 类型一致的 Bean. 在这种情况下, Spring 将无法判定哪个 Bean 最合适该属性, 所以不能执行自动装配. byName(根据名称自动装配): 必须将目标 Bean 的名称和属性名设置的完全相同. constructor(通过构造器自动装配):

Spring 源码(九)@Autowired注解实现原理(Spring Bean的自动装配

@Autowired注解的实现过程,其实就是Spring Bean的自动装配过程.通过看@Autowired源码注释部分我们可以看到@Autowired的实现是通过AutowiredAnnotationBeanPostProcessor后置处理器中实现的. AutowiredAnnotationBeanPostProcessor 类图 PriorityOrdered:确认 AutowiredAnnotationBeanPostProcessor 后置处理器的执行优先级 BeanFactoryAw

Spring 源码(九)@Autowired注解实现原理(Spring Bean的自动装配)

@Autowired注解的实现过程,其实就是Spring Bean的自动装配过程.通过看@Autowired源码注释部分我们可以看到@Autowired的实现是通过AutowiredAnnotationBeanPostProcessor后置处理器中实现的. AutowiredAnnotationBeanPostProcessor 类图 PriorityOrdered:确认 AutowiredAnnotationBeanPostProcessor 后置处理器的执行优先级BeanFactoryAwa

Spring Bean装配详解(五)

装配 Bean 的概述 前面已经介绍了 Spring IoC 的理念和设计,这一篇文章将介绍的是如何将自己开发的 Bean 装配到 Spring IoC 容器中. 大部分场景下,我们都会使用 ApplicationContext 的具体实现类,因为对应的 Spring IoC 容器功能相对强大. 而在 Spring 中提供了 3 种方法进行配置: 在 XML 文件中显式配置 在 Java 的接口和类中实现配置 隐式 Bean 的发现机制和自动装配原则 方式选择的原则 在现实的工作中,这 3 种方

Spring Bean的装配方式

Spring容器负责创建应用程序中的Bean,并通过依赖注入协调这些对象之间的关系.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入(Dependentcy Injection)的本质.Bean的装配方式机Bean依赖注入. Spring容器支持多种形式的Bean装配方式,如基于XML的装配.基于注解(Annotation)的装配和自动装配. 基于XML的Bean装配 Spring提供了两种基于XML的装配方式:属性setter方法注入和构造方法注入. 在Spring实