zoukankan      html  css  js  c++  java
  • 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读取,失败才从网络上读取。

  • 相关阅读:
    Security headers quick reference Learn more about headers that can keep your site safe and quickly look up the most important details.
    Missing dollar riddle
    Where Did the Other Dollar Go, Jeff?
    proteus 与 keil 联调
    cisco router nat
    router dhcp and dns listen
    配置802.1x在交换机的端口验证设置
    ASAv931安装&初始化及ASDM管理
    S5700与Cisco ACS做802.1x认证
    playwright
  • 原文地址:https://www.cnblogs.com/dreamroute/p/5453590.html
Copyright © 2011-2022 走看看