Spring中的资源文件框架——Resource

Spring中的资源文件框架——Resource,第1张

Spring对于资源加载有激辩着一套自己的框架——Resource,Resource继承自InputStream。

下面的是Resource的源码:

下面的是Resource的继承图:(这里只是一部分)

那就是Resource的选择,这么多的Resource如何知道选择使用哪一个?Spring提供了一个强大的资源加载机制,,孙铅陵他可以通过前缀标识加载资源,如:classpath, file等,同时还支持使用Ant风格的通配符。

关于classpath:和classpath :前缀。如果有多个JAR包或文件系统路径都拥有同一个相同的包。classpath:只会找到第一个加载的,而classpath :会扫描所有的这些JAR包及类路径下出现的。

Ant风格的资源地址支持三种通配符:

ResourceLoader接口仅有一个getResource(String location)方法,可根据资源地址加载资源。不过,资源地址仅支持带资源类型前缀的表达式,不支持Ant风格的资源路径表达式。ResourcePatternResolver扩展ResourceLoader接口,定义了一个新的接口方法getResources(String locationPatern),该方法支持带资源前缀及Ant风格的资源则戚路径表达式。

(1)默认 Spring Boot 项目结构,资源文件放置在 src/main/resources 中,测试的资源文件在 src/test/resources 中。

src/main/resources 与 src/test/resources 的区别:

(2)将项目打包后,解压 jar 可以发现原先 src/main/resources 目录下的资源文件已经被打包进来了:

(3)但有时我们的资源文件并不一定是放在 src/main/resources 目录下,比如我的项目通常会将资源文件放在 src/test/resources 目录下:

原敬首高因:根据实践经验表明,测试完后的配置项是最完整芹戚的,且经常会忘记替换正式版参数,因而选择将配置文件全部放置在 src/test/resources 目录下。

(4)又比如 mybatis 的 mapper.xml 文件,我们习惯把它和 Mapper.java 放一起

(5)但上面这两种情况的资源文件,在使用 maven 打包时是不会被打包进 jar 的。这时候我们便要指定需要打包的资源文件,这个有如下两种方法可以实现。

(1)<resources>标签位于 <build>标签内,用于指定项目资源文件的位置。比如下面配置我们指定了 src/test/resources 也是资源文件目录:

(2)而对于写在包下的 Mapper.xml 文件,我们则可以通过如下配置指明资源文件位置:

提示:其中 * / 这样的写法,是为了保证各级子目录下的资源文件被打包。

(3)我们还可以通过 excludes 标签剔除不需要的资源:

(1)除了使用 <resources>标签外亮尺,我们也可以使用 maven-resources-plugin 插件实现同样的目的。比如下面配置把 src/test/resources 目录下的资源文件打包到 classes 目录下:

(2)而对于写在包下的 Mapper.xml 文件,我们也可以通过 maven-resources-plugin 插件将其打包到相应位置:

(3)使用 maven-resources-plugin 插件时,我们同样可以通过 excludes 标签剔除不需要的资源:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8197643.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存