关于spring的xml文件读取文件,classpath加载

最近在回顾spring配置

<!-- spring的标签 -->
<context:property-placeholder location="classpath:db.properties" />

<bean class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="configLocation" value="classpath:mybatis-config.xml" />
		<property name="dataSource" ref="dataSource" />
</bean>

<!-- mybatis里面的标签 -->
<mappers>
		<mapper resource="com/mapper/CountryMapper.xml" />
</mappers>

类似比如还有<bean class="..."/>,这个自己能相通,通过全限定名去找到class创建对象。

那么这些配置在加载文件的时候,为什么有些需要加classpath:... ,有些文件只需要配置包名+类名,比如上面加载mapper,类似于全限定名就能找到文件。

我的疑问,都是去找文件的配置,为什么会出现这个差别。

百度实在找不到,没人回答我只能这样想了,配置文件需要加classpath,代码直接全限定名就行了。

1.这个跟项目部署有关系

2.使用开发工具,比如idea,去运行项目,实际上是idea帮你把文件编译之后,再把项目打包

3.所以会发现项目第一次运行会比较慢,运行成功后会出现一个新的文件夹,比如target,这里面是所以编译好的文件,执行的也是这些

4.在target文件夹中,因为配置文件中定义了其它文件的关联,但这时候通过相对路径找不到,增加classpath可以理解为把相对路径的范围确定在resources文件夹中,在这里去找就可以了