• 第2章—装配Bean—通过XML装配Bean


    通过XML装配Bean

    ​ 尽管我们在生成Bean的过程中可以用到很多方法,但我们依然需要Spring的XML配置来完善更多的需求,下面就来介绍下XML装配Bean的过程是怎样的.

    3.1创建XML配置规范

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"  xmlns:c="http://www.springframework.org/schema/c"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
    			http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    			http://www.springframework.org/schema/mvc
    			http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
    			 http://www.springframework.org/schema/aop
                 http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
    			http://www.springframework.org/schema/context
    			http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    </beans>
    

    1.先前提过的@Bean的注解实现效果和如下的配置一样

    <bean id="quest" class="QuestImpl"/>
    

    2.借助构造器初始化Bean,有如下两种方式可以实现:

    • <constructor-arg >元素名
    • 使用Spring3.0所引入的c-命名空间

    如下:

    <bean id="braveKnight" class="BraveKnight" >
        <constructor-arg ref="quest"/>
       </bean>
    
    <bean id="braveKnight" class="BraveKnight" c:quest-ref="quest"/>
    

    装配集合,当我们需要往构造器中传入相应的多个参数的时候,我们可以使用集合来装相应的参数值,如下:

    <!--注入BraveKnight-->
        <bean id="braveKnight" class="BraveKnight" ref="quest">
            <constructor-arg>
                <list>
                    <value>sgt</value>
                    <value>Twinkle, twinkle, little start</value>
                </list>
            </constructor-arg>
         </bean>
    

    我们也可以用<ref>元素代替<value>,实现bean的列表装配:

    <!--注入BraveKnight-->
        <bean id="braveKnight" class="BraveKnight" ref="quest">
           <constructor-arg >
                <list>
                   <ref bean="quest"/>
                   <ref bean="minstrel"/>
                </list>
            </constructor-arg>
         </bean>
    

    当然我们也可以用同样的方式使用<Set>去装配

    3.2.设置属性

    ​ 到目前为止,我们都是通过构造器来注入相关的成员变量的,没有使用属性的Setter方法,接下来我们就看下Spring XML如何实现属性注入:

     <bean id="SgtPeppers" class="com.CDDemo.SgtPeppers">
            <property name="title" value="sgt"/>
            <property name="song" value="Twinkle, twinkle, little start"/>
        </bean>
    

    我们也可以使用p-命名空间的方式装配Bean:

    <bean id="SgtPeppers" class="com.CDDemo.SgtPeppers" p:title="sgt" p:song="Twinkle, twinkle, little start"/>
    

    ​ 我们还可以用<list>来盛装更多的被集合List包裹的参数值:

      <property name="titleList">
                <list>
                    <value>Twinkle</value>
                    <value>twinkle</value>
                    <value>little start</value>
                </list>
            </property>
    

    3.3.混合配置

    当我们需要把几个类组合在一起的时候可以用@Import注解的方式:

    @Component
    @Import(CDPlayerConfig.class)
    public class SgtPeppers implements CompactDisc {
    
        private String title = "sgt";
        private String song = "Twinkle, twinkle, little start";
    
        public void play() {
            System.out.println("title:" + title + "song:" + song);
        }
    }
    
    
    @Component
    @Import({CDPlayerConfig.class,CDTest.class})
    public class SgtPeppers implements CompactDisc {
    
        private String title = "sgt";
        private String song = "Twinkle, twinkle, little start";
    
        public void play() {
            System.out.println("title:" + title + "song:" + song);
        }
    }
    
    

    如果需要引入配置中的Bean,则可以@ImportResource()中加入相应为配置文件的地址:

    @Component
    @Import({CDPlayerConfig.class,CDTest.class})
    @ImportResource("classpath:application.xml")
    public class SgtPeppers implements CompactDisc {
        private String title = "sgt";
        private String song = "Twinkle, twinkle, little start";
        public void play() {
            System.out.println("title:" + title + "song:" + song);
        }
    }
    
    

    如果我们需要在一个XML中引入另一个XML的配置,可以使用<import resource>引入相关的配置文件:

    <?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">
    
        <!--将application.xml引入进来-->
        <import resource="application.xml"/>
    
    </beans>
    
  • 相关阅读:
    About
    Git
    SQL
    fiddler
    Windows下----nvm的安装操作
    vs-code 的常用插件
    npm安装依赖时-S和-D的作用以及区别
    Node.js的安装以及包的安装使用
    JavaScript-----设计模式
    JavaScript-----JS的深拷贝和浅拷贝
  • 原文地址:https://www.cnblogs.com/charlypage/p/9221178.html
Copyright © 2020-2023  润新知