Spring(23) 命名空间

  1. 为了精简配置文件,可以使用命名空间~~
  2. p,也就是property,可以简化bean的peoperty配置。具体看代码
    <?xml version="1.0" encoding="GBK"?>
    <!--需要引入p命名空间-->
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:p="http://www.springframework.org/schema/p"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
    	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
    
        <bean id="test" class="MainPackage.MainClass" p:integerVariable="12"  p:classA-ref="referenceA" p:classB-ref="referenceB"/>
            <!--然后可以在bean中优雅地配置peoperty啦  classA-ref是引用其他bean  integerVariable是指定基本类型变量-->
    
    
        <bean id="referenceA" class="ReferenceClass.ReferenceClassA">
            <property name="thisIsA" value="this is a"/>
        </bean>
    
        <bean id="referenceB" class="ReferenceClass.ReferenceClassB">
            <property name="thisIsB" value="this is b"/>
        </bean>
    
    </beans>
    package MainPackage;
    
    import ReferenceClass.ReferenceClassA;
    import ReferenceClass.ReferenceClassB;
    
    public class MainClass {
        private ReferenceClassA classA;
        private ReferenceClassB classB;
        private int IntegerVariable;
    
        public int getIntegerVariable() {
            return IntegerVariable;
        }
    
        public void setIntegerVariable(int integerVariable) {
            IntegerVariable = integerVariable;
        }
    
        public ReferenceClassA getClassA() {
            return classA;
        }
    
        public void setClassA(ReferenceClassA classA) {
            this.classA = classA;
        }
    
        public ReferenceClassB getClassB() {
            return classB;
        }
    
        public void setClassB(ReferenceClassB classB) {
            this.classB = classB;
        }
    
        public void test(){
            System.out.println("thisIsA" + classA.getThisIsA());
            System.out.println("thisIsB" + classB.getThisIsB());
        }
    }
    
    package TestPackage;
    
    import MainPackage.MainClass;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class SpringTest {
        public static void main(String [] args){
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
            MainClass mainClass = applicationContext.getBean("test", MainClass.class);
            System.out.println(mainClass.getClassA().getThisIsA());
            System.out.println(mainClass.getClassB().getThisIsB());
        }
    }
    
    package ReferenceClass;
    
    public class ReferenceClassA {
        private String thisIsA;
    
        public String getThisIsA() {
            return thisIsA;
        }
    
        public void setThisIsA(String thisIsA) {
            this.thisIsA = thisIsA;
        }
    }
    
    package ReferenceClass;
    
    public class ReferenceClassB {
        private String thisIsB;
    
        public String getThisIsB() {
            return thisIsB;
        }
    
        public void setThisIsB(String thisIsB) {
            this.thisIsB = thisIsB;
        }
    }
    
  3. 命名空间,为了精简构造方法配置的,用法和p差不多,这是部分例子,其他的和上面是一样的

    package MainPackage;
    
    import ReferenceClass.ReferenceClassA;
    import ReferenceClass.ReferenceClassB;
    
    public class MainClass {
        private ReferenceClassA classA;
        private ReferenceClassB classB;
        private int IntegerVariable;
    
    //    在这里写了构造方法,然后呢在配置文件里用c进行具体配置
        public MainClass(ReferenceClassA classA, ReferenceClassB classB, int IntegerVariable){
            this.classA = classA;
            this.classB = classB;
            this.IntegerVariable = IntegerVariable;
        }
    
        public int getIntegerVariable() {
            return IntegerVariable;
        }
    
        public void setIntegerVariable(int integerVariable) {
            IntegerVariable = integerVariable;
        }
    
        public ReferenceClassA getClassA() {
            return classA;
        }
    
        public void setClassA(ReferenceClassA classA) {
            this.classA = classA;
        }
    
        public ReferenceClassB getClassB() {
            return classB;
        }
    
        public void setClassB(ReferenceClassB classB) {
            this.classB = classB;
        }
    
        public void test(){
            System.out.println("thisIsA" + classA.getThisIsA());
            System.out.println("thisIsB" + classB.getThisIsB());
            System.out.println("this is it's int " + IntegerVariable);
        }
    }
    
    <?xml version="1.0" encoding="GBK"?>
    <!--需要引入命名空间-->
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:p="http://www.springframework.org/schema/p"
           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.0.xsd">
    
        <bean id="test" class="MainPackage.MainClass" c:classA-ref="referenceA" c:classB-ref="referenceB" c:IntegerVariable="5"/>
            <!--然后可以在bean中优雅地配置peoperty啦  classA-ref是引用其他bean  integerVariable是指定基本类型变量-->
    
    
        <bean id="referenceA" class="ReferenceClass.ReferenceClassA">
            <property name="thisIsA" value="this is a"/>
        </bean>
    
        <bean id="referenceB" class="ReferenceClass.ReferenceClassB">
            <property name="thisIsB" value="this is b"/>
        </bean>
    
    </beans>

    c标签还可以根据参数的位置进行赋值配置

    <bean id="test" class="MainPackage.MainClass" c:_0-ref="referenceA" c:_1-ref="referenceB" c:_2="5"/>
  4. 还有呢,可以通过util标签来配置集合元素~   例子里beans的结构是:在beans下配置好util,然后在一个bean中通过c标签使用这些util

    <?xml version="1.0" encoding="GBK"?>
    <!-- 指定Spring配置文件的根元素和Schema
    	导入p:命名空间和util:命名空间的元素 -->
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:util="http://www.springframework.org/schema/util" 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.0.xsd
    	http://www.springframework.org/schema/util
    	http://www.springframework.org/schema/util/spring-util-4.0.xsd">
    
        <bean id="test" class="MainPackage.MainClass"
        c:classA-ref="referenceA" c:classB-ref="referenceB" c:IntegerVariable="5" c:testList-ref="test.testList"
              c:testMap-ref="test.testMap" c:testSet-ref="test.testSet"/>
            <!--然后可以在bean中优雅地配置peoperty啦  classA-ref是引用其他bean  integerVariable是指定基本类型变量-->
    
        <util:constant id="test.IntegerVariable" static-field="java.sql.Connection.TRANSACTION_NONE"/>
    
        
        <!--这就是util的配置啦,指定id,指定实现类,再指定它具体的值-->
        <util:list id="test.testList" list-class="java.util.LinkedList">
            <value>1</value>
            <value>2</value>
        </util:list>
    
    
        <util:map id="test.testMap" map-class="java.util.TreeMap">
            <entry key="a" value="A"/>
            <entry key="b" value="B"/>
        </util:map>
    
        <util:set id="test.testSet" set-class="java.util.HashSet">
            <value>aaa</value>
            <bean   class="java.util.Date"/>
            <ref bean="referenceB"/>
        </util:set>
    
        <bean id="referenceA" class="ReferenceClass.ReferenceClassA">
            <property name="thisIsA" value="this is a"/>
        </bean>
    
        <bean id="referenceB" class="ReferenceClass.ReferenceClassB">
            <property name="thisIsB" value="this is b"/>
        </bean>
    
    </beans>
  5. 这是我看李刚编著的《轻量级javaEE企业应用实战(第五版)-Struts2+Spring5+Hibernate5/JAP2》后总结出来的。

猜你喜欢

转载自blog.csdn.net/weixin_39452731/article/details/84873256