zoukankan      html  css  js  c++  java
  • 配置扫描路径详细说明 * ** ?的含义

    Java代码  收藏代码
    1. org.springframework.core.io.supportClassPathMatchingResourcePatternResolver  
    Java代码  收藏代码
    1. org.springframework.utilClass AntPathMatcher  

    所有的配置官方说明请参照这两个类

    在web.xml配置spring的配置文件

     

    Xml代码  收藏代码
    1. <context-param>  
    2.         <param-name>contextConfigLocation</param-name>  
    3.         <param-value>这里写路劲</param-value>  
    4. </context-param>  

    首先上几种写法(这个是spring的api复制的)

     

    Java代码  收藏代码
    1. 1. /WEB-INF/*-context.xml 
    2. 2. com/mycompany/**/applicationContext.xml  
    3. 3. file:C:/some/path/*-context.xml 
    4. 4. classpath:com/mycompany/**/applicationContext.xml  
     

    这些路径看起来很乱有木有

    这里要说明一点,不要以为路径中的匹配符号是正则表达式(开始我是这样想的),这些符号的完整定义

    ----------------------------------------------------------------------

    ?    匹配一个任意字符   aa?  可以匹配  aa1  aab  但是不能匹配aa

    *    匹配零个或者多个字符  aa* 可以匹配 aa1 aab  aa aaa

    **  两个**不要以为是上面那个* 写两个的意思。 它的意思是匹配任意个路径 aa/**/bb  可以匹配aa/b/c/bb   aa/bb

    aa  和bb之间可以个任意目录

    ----------------------------------------------------------------------

     

    1.会查找到WEB-INF目录下的以"-context.xml"结尾的文件  在WEB-INF下的 a-context.xml b-context.xml都会被找到

    2.com/mycompany/目录下所有的applicationContext.xml都会被找到

    3.file 表示会根据文件系统的路径查找 这个条会找到 c盘下的/some/path目录以"-context.xml"的文件都会被找到

    4.查找classpath下的com/mycompany/包中所有子包的applicationContext.xml文件 

     

    这个东西却是搞的有点复杂了。

     

     

    完了吗 ? 还没有 还有classpath classpath*  [注意*

     

    示例1:  classpath*:config/applicationContext.xml    //: 查找本项目的classpath以及Jar包的classpath目录下的匹配的文件.

    示例2:  classpath:config/applicationContext.xml     //查找本项目的classpath 目录下的匹配的文件.


    区别是神马?classpath还有classpathaa或者classpathbb 不会呀,java只有classpath,那,那个*是神马意思。。。。 

    我告诉你:

    classpath*中的*并非 匹配零或者多个字符的那个*  (太乱了有木有)


    classpath*是一种特殊的表示方法  ,它告诉spring找配置文件的时候WEB-INF/LIB中的jar文件也要找

    classpath*:applicationContext.xml会找到所有jar文件根目录的applicationContext.xml文件,当然也包括classpath中的applicationContext.xml

    这里有一点要注意  classpath*如果要在jar文件的根目录查找  就不能使用上面的那种模糊匹配,比如

    classpath*:app*.xml 这样只能找到classpath下的app开头*.xml结尾的配置文件, 效果和classpath:app*.xml一样,jar中的会被忽略

    如果想查找jar中的配置文件就把配置文件放在jar文件的根目录下级下的目录(包括下级) 例如

    jar文件中springConfig/applicationContext.xml,  springConfig/applicationAA.xml

    可以使用 classpath*:springConfig/app*.xml找到这两个配置文件.

    总之要找到jar文件中的配置文件,还要使用模糊匹配,配置文件就应该在jar文件根目录除外的其他任何地方,然后根据路径名称模糊匹配即可找到






  • 相关阅读:
    用initconnect+binlog实现用户操作追踪【转】
    INSERT INTO … SELECT 的锁【转】
    Memcached 高可用方案 Repcached
    关于MySQL建表对DML的影响【转】
    NoSQL之【memcached】学习
    关于MySQL insert into ... select 的锁情况
    MySQL数据库诊断——InnoDB关机问题 【转】
    Your document is being created
    Failure to Get Sequential Numbering Profile Option
    Runtime error '1004'
  • 原文地址:https://www.cnblogs.com/duenboa/p/6665497.html
Copyright © 2011-2022 走看看