• 装配Bean—通过XML装配Bean


    通过XML装配Bean:

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

    创建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>去装配

    设置属性:

     到目前为止,我们都是通过构造器来注入相关的成员变量的,没有使用属性的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>

    混合配置

    当我们需要把几个类组合在一起的时候可以用@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>
  • 相关阅读:
    【数学】三分法
    【数学】【背包】【NOIP2018】P5020 货币系统
    【数学】【CF27E】 Number With The Given Amount Of Divisors
    【单调队列】【P3957】 跳房子
    【极值问题】【CF33C】 Wonderful Randomized Sum
    【DP】【CF31E】 TV Game
    【神仙题】【CF28D】 Don't fear, DravDe is kind
    【线段树】【CF19D】 Points
    【字符串】KMP字符串匹配
    【二维树状数组】【CF10D】 LCIS
  • 原文地址:https://www.cnblogs.com/socketqiang/p/11321796.html
Copyright © 2020-2023  润新知