zoukankan      html  css  js  c++  java
  • Spring_总结_03_装配Bean(三)_XML配置

    一、前言

    本文承接上一节:Spring_总结_03_装配Bean(二)之Java配置

    上一节说到,当需要显示配置时,首选类型安全并且比XML更强大Java配置。

    那什么时候使用XML配置呢?

    (1)维护已有XML配置

    (2)想使用便利的XML命名空间,并且在JavaConfig中没有同样的实现。

    二、引入schema

    <?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.xsd">
    
    
    </beans>
    View Code

    用来装配bean的最基本的XML元素包含在spring-beans模式中,在上面这个XML文件中,它被定义为根命名空间。

    <beans>是该模式中的一个元素,它是所有Spring配置文件的根元素。

    三、声明Bean

        <bean id="compactDisc" class="soundsystem.SgtPeppers"></bean>

    id :指定bean的名字,以便于被其他bean引用。

    class : 全类名,指定创建bean的Class

    注:

    (1)通过xml配置的方式,我们不再直接负责创SgtPeppers,而在JavaConfig中,我们却是需要这样做的。当Spring发现 <bean>元素时,他会调用默认构造器来创建bean。

    (2)将bean的类型以字符串的形式设置在class属性中,不便于重构。(如修改类名时)

    四、构造器注入

    注入bean有两种方式:

    (1)构造器注入

    (2)属性注入

    这两种方式如何选择:强依赖选择构造器注入,可选性依赖使用属性注入。

    1. constructor-arg

    <?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.xsd">
    
        <bean id="compactDisc" class="soundsystem.SgtPeppers"></bean>
    
        <bean id="cdPlayer"    class="soundsystem.CDPlayer">
            <constructor-arg ref="compactDisc" />
        </bean>
        
    </beans>
    View Code

    2. c-命名空间

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:c="http://www.springframework.org/schema/c"
           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">
    
        <bean id="compactDisc" class="soundsystem.SgtPeppers"></bean>
      
        <bean id="cdPlayer" class="soundsystem.CDPlayer"
              c:cd-ref="compactDisc"/>
        
        <bean id="cdPlayer2" class="soundsystem.CDPlayer"
              c:_0-ref="compactDisc"/>
    
    
    </beans>
    View Code

    (1)构造器参数名

    "c:"为命名空间

    “-ref”表示注入引用

    “cd”为构造器参数名

    (2)构造器参数索引

    “_i”为第i个参数。

    表示为第i个参数注入bean

    3. 字面量

    将字面量注入到构造器中

    (1)constructor-arg

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:c="http://www.springframework.org/schema/c"
           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">
    
        <bean id="blankDisc" class="soundsystem.BlankDisc">
            <constructor-arg value="字面量"/>
        </bean>
    
    
    
    </beans>
    View Code

    (2)构造器参数名

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:c="http://www.springframework.org/schema/c"
           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">
    
        <bean id="blankDisc" class="soundsystem.BlankDisc"
              c:_title="标题"
              c:_author="作者" />
    
    </beans>
    View Code

    (3)构造器参数索引

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:c="http://www.springframework.org/schema/c"
           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">
    
        <bean id="blankDisc" class="soundsystem.BlankDisc"
              c:_0="标题"
              c:_1="作者" />
    
    </beans>
    View Code

    4. 集合

    BlankDisc

    public class BlankDisc  implements CompactDisc{
        private String title;
        private String author;
        private List<String> tracks;
    
        public BlankDisc(String title, String author, List<String> tracks) {
            this.title = title;
            this.author = author;
            this.tracks = tracks;
        }
    
        public void play(){
            System.out.print("aaaaaaaa");
        }
    }
    View Code

    beans.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:c="http://www.springframework.org/schema/c"
           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">
    
        <bean id="compactDisc" class="soundsystem.BlankDisc">
            <constructor-arg value="标题"/>
            <constructor-arg value="作者"/>
            <constructor-arg>
                <list>
                    <value>111111111</value>
                    <value>222222222</value>
                    <value>333333333</value>
                    <value>444444444</value>
                    <value>555555555</value>
                </list>
            </constructor-arg>
        </bean>
    
        <bean id="compactDisc2" class="soundsystem.BlankDisc">
            <constructor-arg value="标题"/>
            <constructor-arg value="作者"/>
            <constructor-arg>
                <list>
                    <ref bean="compactDisc" />
                    <ref bean="compactDisc" />
                    <ref bean="compactDisc" />
                    <ref bean="compactDisc" />
                </list>
            </constructor-arg>
        </bean>
    
    
        <bean id="compactDisc3" class="soundsystem.BlankDisc">
            <constructor-arg value="标题"/>
            <constructor-arg value="作者"/>
            <constructor-arg>
                <set>
                    <value>111111111</value>
                    <value>222222222</value>
                    <value>333333333</value>
                    <value>444444444</value>
                    <value>555555555</value>
                </set>
            </constructor-arg>
        </bean>
    
    </beans>
    View Code

    五、属性注入

    1.注入引用

    <?xml version="1.0" encoding="UTF-8"?>
    <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: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">
    
        <bean id="compactDisc" class="soundsystem.CompactDisc" />
    
        <bean id="cdPlayer" class="soundsystem.CDPalyer" >
            <property name="compactDisc" ref="compactDisc" />
        </bean>
    
        <bean id="cdPlayer2" class="soundsystem.CDPalyer"
              p:compactDisc-ref="compactDisc"/>
    
    </beans>
    View Code

    2.注入字面量

    BlankDisc

    public class BlankDisc  implements CompactDisc{
        private String title;
        private String author;
        private List<String> tracks;
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public void setAuthor(String author) {
            this.author = author;
        }
    
        public void setTracks(List<String> tracks) {
            this.tracks = tracks;
        }
    
        public void play(){
            System.out.print("aaaaaaaa");
        }
    }
    View Code

    beans.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/plugin"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/plugin http://www.springframework.org/schema/plugin/spring-plugin.xsd">
    
        <!--1.空属性-->
        <bean id="reallyBlankDisc" class="soundsystem.BlankDisc" />
    
        <!--2.注入list-->
        <bean id="compactBlankDisc" class="soundsystem.BlankDisc" >
            <property name="title" value="标题"/>
            <property name="author" value="作者"/>
            <property name="tracks" >
                <list>
                    <value>11111111</value>
                    <value>11111111</value>
                    <value>11111111</value>
                    <value>11111111</value>
                </list>
            </property>
    
        </bean>
    
    
        <!--3.p命名空间装配引用与装配字面量的唯一区别在于是否带有 -ref
              p命名空间不能用来装配集合
        -->
        <bean id="compactBlankDisc2" class="soundsystem.BlankDisc" 
              p:title="标题"
              p:author="作者">
            <property name="tracks" >
                <list>
                    <value>11111111</value>
                    <value>11111111</value>
                    <value>11111111</value>
                    <value>11111111</value>
                </list>
            </property>
        </bean>
    
        <!--4.<util:list>会创建一个列表bean -->
        <util:list id="tracklist">
            <value>1111111111</value>
            <value>1111111111</value>
            <value>1111111111</value>
            <value>1111111111</value>
        </util:list>
        <bean id="compactBlankDisc3" class="soundsystem.BlankDisc"
              p:title="标题"
              p:author="作者"
              p:tracks-ref="tracklist" />
    </beans>
    View Code
  • 相关阅读:
    如何查看IIS的80端口被占用? 拂晓风起
    配置VSS2005(在局域网内搭建服务器) 拂晓风起
    Log4Net ,.net和SQL Server的完美结合 拂晓风起
    SQL Server简单使用配置 拂晓风起
    ztree图标不显示
    oracle添加同义词
    Struts2作用域和标签库(转)
    java实现链表(转)
    unexpected end of subtree(hql拼写有误,仔细查看hql语句,以及参数值的导入)
    http://www.mianwww.com/html/2012/10/17027.html面试题(经典)
  • 原文地址:https://www.cnblogs.com/shirui/p/9383246.html
Copyright © 2011-2022 走看看