博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
7 -- Spring的基本用法 -- 11... 基于XML Schema的简化配置方式
阅读量:4545 次
发布时间:2019-06-08

本文共 7401 字,大约阅读时间需要 24 分钟。

    7.11 基于XML Schema的简化配置方式

      Spring允许使用基于XML Schema的配置方式来简化Spring配置文件。

      7.11.1 使用p:命名空间简化配置

        p:命名空间不需要特定的Schema定义,它直接存在于Spring内核中。

        当导入p:命名空间之后,就可直接在<bean.../>元素中使用属性来驱动执行setter方法。即用于简化设置注入

        Class : SteelAxe

package edu.pri.lime._7_11_1.bean;public class SteelAxe implements Axe {    public String chop() {        return "用钢斧砍材真快";    }}

        Class : Chinese

package edu.pri.lime._7_11_1.bean.impl;import edu.pri.lime._7_11_1.bean.Axe;import edu.pri.lime._7_11_1.bean.Person;public class Chinese implements Person{    private Axe axe;    private int age;    public Chinese() {        super();        // TODO Auto-generated constructor stub    }    public Axe getAxe() {        return axe;    }    public void setAxe(Axe axe) {        this.axe = axe;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public void useAxe(){        System.out.println(axe.chop());        System.out.println("age成员变量的值:" + age);    }    }

        导入XML Schema里的p:命名空间

        XML :

        Class :SpringTest

package edu.pri.lime._7_11_1.main;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import edu.pri.lime._7_11_1.bean.Person;import edu.pri.lime._7_11_1.bean.impl.Chinese;public class SpringTest {    public static void main(String[] args){        ApplicationContext ctx = new ClassPathXmlApplicationContext("app_7_11_1.xml");        Person chinese = ctx.getBean("chinese",Chinese.class);        chinese.useAxe();    }}

        Console : 

用钢斧砍材真快age成员变量的值:30

      7.11.2 使用c:命名空间简化配置

        c:命名空间用于简化构造注入

        Class : Chinese

package edu.pri.lime._7_11_2.bean.impl;import edu.pri.lime._7_11_2.bean.Axe;import edu.pri.lime._7_11_2.bean.Person;public class Chinese implements Person{    private Axe axe;    private int age;        public Chinese() {        super();    }//    构造注入所需的带参数的构造器    public Chinese(Axe axe, int age) {        super();        this.axe = axe;        this.age = age;    }    public void useAxe() {        System.out.println(axe.chop());        System.out.println("age成员变量的值:" + age);            }    public Axe getAxe() {        return axe;    }    public void setAxe(Axe axe) {        this.axe = axe;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}

        Class : SteelAxe

package edu.pri.lime._7_11_2.bean.impl;import edu.pri.lime._7_11_2.bean.Axe;public class SteelAxe implements Axe{    public String chop() {        return "用钢斧砍材真快";    }}

        导入c:命名空间

        XML : 

        Class : SpringTest

package edu.pri.lime._7_11_2.main;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import edu.pri.lime._7_11_2.bean.Person;import edu.pri.lime._7_11_2.bean.impl.Chinese;public class SpringTest {    public static void main(String[] args){        ApplicationContext ctx = new ClassPathXmlApplicationContext("app_7_11_2.xml");        Person chinese = ctx.getBean("chinese",Chinese.class);        chinese.useAxe();    }}

        使用c:指定构造器参数的格式为:c:构造器参数名=“值” 或 c:构造器参数名-ref=“其他Bean的id”。

        通过索引来配置构造器参数的方式:

        通过索引来配置构造器参数的格式:c:_N=“值” 或 c:_N-ref=“其他Bean的id” 其中N代表第N个构造器参数。

      7.11.3 使用util:命名空间简化配置

        在Spring框架解压缩包的schema\util\路径下包含有util:命名空间的XML Schema文件,为了使用util:命令空间的元素,必须先在Spring配置文件中导入最新的spring-util-4.0.xsd,也就是需要在Spring配置文件中增加如下配置:

        在util Schema下提供了如下几个元素:

          ⊙ constant :该元素用于获取指定类的静态Field的值。它是FieldRetrievingFactoryBean的简化配置。

          ⊙ property-path : 该元素用于获取指定对象的getter方法的返回值。它是PropertyPathFactoryBean的简化配置。

          ⊙ list : 该元素用于定义一个List Bean,支持使用<value.../>、<ref.../>、<bean.../>等子元素来定义List集合元素。

            使用该标签支持如下三个属性:

            ◎ id : 该属性指定定义一个名为id 的List Bean实例。

            ◎ list-class : 该属性指定Spring使用哪个List实现类来创建Bean实例。默认使用ArrayList作为实现类。

            ◎ scope : 指定该List Bean实例的作用域。

          ⊙ set : 该元素用于定义一个Set Bean,支持使用<value.../>、<ref.../>、<bean.../>等子元素来定义Set元素集合。

            ◎ id : 该属性指定定义一个名为id的Set Bean实例。

            ◎ set-class : 该属性指定Spring 使用哪个Set实现类来创建Bean实例。默认使用HashSet作为实现类。

            ◎ scope : 指定该Set Bean实例的作用域。

          ⊙ map : 该元素用于指定一个Map Bean,支持使用<entry.../>来定义Map的key-value对。

            使用该标签支持如下三个属性:

            ◎ id 该属性指定定义一个名为id的Map Bean实例。

            ◎ map-class : 该属性指定Spring使用哪个Map实现类来创建Bean实例。默认使用HashMap作为实现类。

            ◎ scope : 指定该Map Bean 实例的作用域。

          ⊙ properties : 该元素用于加载一份资源文件,并根据加载的资源文件创建一个Properties Ben 实例。

            使用该标签可指定如下几个属性:

            ◎ id : 该属性指定定义一个名为id 的Properties Bean实例。

            ◎ location : 指定资源文件的位置。

            ◎ scope : 指定该Properties Bean实例的作用域。

          Class : Chinese

package edu.pri.lime._7_11_3.bean.impl;import java.util.List;import java.util.Map;import java.util.Set;import edu.pri.lime._7_11_3.bean.Axe;import edu.pri.lime._7_11_3.bean.Person;public class Chinese implements Person{    private Axe axe;    private int age;    private List schools;    private Map scores;    private Set axes;        public Chinese() {        super();    }    public void useAxe() {        System.out.println(axe.chop());        System.out.println("age属性值:" + age);        System.out.println(schools);        System.out.println(scores);        System.out.println(axes);    }    public Axe getAxe() {        return axe;    }    public void setAxe(Axe axe) {        this.axe = axe;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public List getSchools() {        return schools;    }    public void setSchools(List schools) {        this.schools = schools;    }    public Map getScores() {        return scores;    }    public void setScores(Map scores) {        this.scores = scores;    }    public Set getAxes() {        return axes;    }    public void setAxes(Set axes) {        this.axes = axes;    }}

        导入util:命名空间Schema

        XML : 

小学
中学
大学
字符串

    Class : SpringTest

package edu.pri.lime._7_11_3.main;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import edu.pri.lime._7_11_3.bean.Person;import edu.pri.lime._7_11_3.bean.impl.Chinese;public class SpringTest {    public static void main(String[] args){        ApplicationContext ctx = new ClassPathXmlApplicationContext("app_7_11_3.xml");        Person chinese = ctx.getBean("chinese",Chinese.class);        chinese.useAxe();    }}

        除此之外,关于Spring其他常用的简化Schema简要说明如下:

        ⊙ spring-aop-4.0.xsd :用于简化Spring AOP配置的Schema。

        ⊙ spring-jee-4.0.xsd : 用于简化Spring 的Java EE 配置的Schema。

        ⊙ spring-jms-4.0.xsd : 用于简化Spring关于JMS 配置的Schema。

        ⊙ spring-lang-4.0.xsd : 用于简化Spring 动态语言配置的Schema。

        ⊙ spring-tx-4.0.xsd : 用于简化Spring事务配置的Schema。

啦啦啦

转载于:https://www.cnblogs.com/ClassNotFoundException/p/6286964.html

你可能感兴趣的文章
文件下载工具类
查看>>
Python 定义自己的常量类
查看>>
C++读取文本文件
查看>>
Python 字典排序
查看>>
sql中写标量函数生成大写拼音首字母
查看>>
ASP.NET Core 2.1 : 十五.图解路由(2.1 or earler)
查看>>
服务器返回状态码说明
查看>>
判断浏览器内核(转)
查看>>
GitHub for Windows提交失败“failed to sync this branch”
查看>>
linux 安装 git
查看>>
Margin
查看>>
完成登录与注册页面的前端
查看>>
centos 源码安装php7
查看>>
Log4j详细教程
查看>>
UVa-1368-DNA序列
查看>>
ConfigParser模块
查看>>
如何开发优质的 Flutter App:Flutter App 软件测试指南
查看>>
决胜Flutter 第一章 熟悉战场
查看>>
如何开发优质的 Flutter App:Flutter App 软件调试指南
查看>>
决胜经典算法之冒泡排序
查看>>