Spring 为Hibernate做的packagesToScan 倒底是如何被解析的
Spring 为Hibernate做的packagesToScan 倒底是怎么被解析的?
首先,Spring用AntPathMatcher 来解析路径,这个好办,毕竟Ant风格的路径大家都熟
但在调用这个Matcher之前,Spring 会先将你在XML中写的路径转变成Ant风格的路径。那,是怎么转换的呢?
经过试验,我的结论如下
<property name="packagesToScan" value="com.xxx.model" />, 会转换成"classpath*:com/xxx/model**/*.class",这个路径可以找出com/xxx/model根目录下的类文件
<property name="packagesToScan" value="com.xxx.model.*" />, 会转换成"classpath*:com/xxx/model/***/*.class",这个路径可以找出com/xxx/model根目录下一级子目录中的类文件,如com/xxx/model/son/Hi.class
<property name="packagesToScan" value="com.xxx.model." />(注意最后的点) , 会转换成"classpath*:com/xxx/model/**/*.class",这个路径可以找出com/xxx/model根目录下及其子孙目录下所有的类文件. 一般来讲,这些就是我们要的文件。
首先,Spring用AntPathMatcher 来解析路径,这个好办,毕竟Ant风格的路径大家都熟
但在调用这个Matcher之前,Spring 会先将你在XML中写的路径转变成Ant风格的路径。那,是怎么转换的呢?
经过试验,我的结论如下
<property name="packagesToScan" value="com.xxx.model" />, 会转换成"classpath*:com/xxx/model**/*.class",这个路径可以找出com/xxx/model根目录下的类文件
<property name="packagesToScan" value="com.xxx.model.*" />, 会转换成"classpath*:com/xxx/model/***/*.class",这个路径可以找出com/xxx/model根目录下一级子目录中的类文件,如com/xxx/model/son/Hi.class
<property name="packagesToScan" value="com.xxx.model." />(注意最后的点) , 会转换成"classpath*:com/xxx/model/**/*.class",这个路径可以找出com/xxx/model根目录下及其子孙目录下所有的类文件. 一般来讲,这些就是我们要的文件。