• Spring的beans标签下可以有其他标签


      以前有对xsd(也就是schema文件)小做研究,有个小困惑,就是我们定义的元素只能使用定义的哪一些标签,比如<beans>下面就只能有自定义的哪一些,那为什么在引入<context>、<aop>等命名空间之后就能使用上诉2个标签呢?之前一直嫌弃spring的xsd太长,第一眼看上去比较混乱,今天鼓起勇气看了一下<beans>的xsd文件,看了之后发现其实还是非常简单的,所使用的无外乎也就是xsd那些东西。

      那么,<beans>标签下对元素的定义中有一段是这样子的:

    <xsd:sequence>
      <xsd:element ref="description" minOccurs="0" /> 
    - <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="import" /> 
      <xsd:element ref="alias" /> 
      <xsd:element ref="bean" /> 
      <xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded" /> 
      </xsd:choice>
      </xsd:sequence>

      倒数第三行:表示<beans>下面可以包含任意标签,来自其他命名空间的。这就解释了上面的问题。

      另外:xmlns:p="http://www.springframework.org/schema/p"这个命名空间能够让<bean>的属性<property>标签使用简写,如:

        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
          <property name="basePackage" value="com.mook.mybatis.core.mapper" />
        </bean>

      就可以写成:

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" p:basePackage="com.mook.mybatis.core.mapper"/>

      这种方式,但是一般来说没什么必要,少不了几行,另外简写方式不够灵活。一般来说,知道有这么回事就够了,使用前面的方式就行。

      再者:spring的命名空间对xsd的引用不需要加版本号,不加版本号使用的xsd文件就是最新的,他是从classpath中获取的。spring读取校验xsd是先从本地classpath读取,失败才从网络上读取。

  • 相关阅读:
    Oracle载体服务器迁移后,数据一致性校验脚本
    六、HDFS
    五、集群配置
    2、【Hadoop HDFS】Does not contain a valid host:port authority: pc_node01:8082
    1、【Hadoop Yarn】 ./sbin/start-yarn.sh时,报错there is no YARN_RESOURCEMANAGER_USER defined
    一、Thread
    Centos安装KDE
    四、ssh免密登录
    cell_滑动
    aircrack-ng破解WiFi密码
  • 原文地址:https://www.cnblogs.com/dreamroute/p/5453590.html
Copyright © 2020-2023  润新知