(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 的 mapperxml 文件,我们习惯把它和 Mapperjava 放一起
(5)但上面这两种情况的资源文件,在使用 maven 打包时是不会被打包进 jar 的。这时候我们便要指定需要打包的资源文件,这个有如下两种方法可以实现。
(1)<resources> 标签位于 <build> 标签内,用于指定项目资源文件的位置。比如下面配置我们指定了 src/test/resources 也是资源文件目录:
(2)而对于写在包下的 Mapperxml 文件,我们则可以通过如下配置指明资源文件位置:
提示:其中 / 这样的写法,是为了保证各级子目录下的资源文件被打包。
(3)我们还可以通过 excludes 标签剔除不需要的资源:
(1)除了使用 <resources> 标签外,我们也可以使用 maven-resources-plugin 插件实现同样的目的。比如下面配置把 src/test/resources 目录下的资源文件打包到 classes 目录下:
(2)而对于写在包下的 Mapperxml 文件,我们也可以通过 maven-resources-plugin 插件将其打包到相应位置:
(3)使用 maven-resources-plugin 插件时,我们同样可以通过 excludes 标签剔除不需要的资源:
SpringBoot基于Spring,集成SpringBoot,不会对原有项目的SpringMvc,MyBatis等框架产生冲突。
Spring Boot 会选择最适合的 Spring 子项目和第三方开源库进行整合。大部分 Spring Boot 应用只需要非常少的配置就可以快速运行起来。
1很多配置需要重新去学习
2会引入很多关联的依赖,要注意版本冲突的问题,需要保证版本统一
运行SpringbootApplication类的main()方法即可,因为spring-boot-starter-web内置tomcat组件,所以不需要配置tomcat。
1打包成Jar,使用jar –jar xxxjar命令直接运行
2打包成war,部署在外置的tomcat容器中
startAppsh
Tomcat的配置放在applicationproperties或者applicationyml中,示例applicationyml中:
Spring Boot使用了一个全局的配置文件applicationproperties,放在src/main/resources目录下或者类路径的/config下。Sping Boot的全局配置文件的作用是对一些默认配置的配置值进行修改。
配置文件分为两种格式:yml格式、properties格式yml文件比properties文件更方便阅读和书写,推荐用yml格式;
区别:
Properties中springdatasourcedruidminIdle=5
等同于yml文件中
spring:
datasource:
druid:
minldle: 5
yml的格式要求:
1子属性前面要加两个空格
2冒号后面要有一个空格
3不要用TAB键进行缩进,否则解析yml文件时报错
默认情况下,applicationproperties和applicationyml文件可以放在以下四个位置:
1外置,在相对于应用程序运行目录的/congfig子目录里。
2外置,在应用程序运行的目录里
3内置,在config包内
4内置,在Classpath根目录
这个列表按照优先级排序,也就是说,src/main/resources/config下applicationproperties覆盖src/main/resources下applicationproperties中相同的属性。
目前开发环境可以选择第四种,把applicationproperties放在src\main\resources目录下。
测试环境和生产环境的配置和应用分离,通过
命令可以加载配置文件,多个配置文件用逗号分离,例如:
或者:
应用启用时默认会加载applicationproperties文件。
读取属性的方式:
属性加载在bean中
使用属性
在Spring Boot中配置上下文路径,只需要在applicationproperties/yml文件中添加`serverservletcontext-path`配置项即可。如果出现了配置项出现两遍的情况,可能是以下原因:
1 applicationproperties/yml文件中存在多个`serverservletcontext-path`配置项。可以检查一下文件中是否有多余的配置项,删除多余的配置即可。
2 在其他的配置文件中也存在`serverservletcontext-path`配置项。如果在其他配置文件中也有配置该项,可能会导致出现两遍的情况。可以检查其他配置文件中是否也有该配置项,并删除多余的配置即可。
3 在代码中也进行了配置。如果在代码中也进行了上下文路径的配置,可能会导致出现两遍的情况。可以检查代码中是否有进行该配置,并删除多余的配置即可。
总之,出现配置项出现两遍的情况,一般是由于配置文件或者代码中重复配置导致的。检查配置文件和代码,删除多余的配置即可解决问题。
假设有一个jar包,里面有一个testtxt,里面有一行字符串 123abc ,现在要在一个以jar命令运行的spring-boot项目环境中读取,要怎么做?
假设把这个jar包,一个放到D盘的test目录下,一个放到spring-boot项目resources目录下的lib子目录里,可以使用以下两种方法分别读取:
使用mvn clean package打包项目,然后使用java -jar xxxjar执行该项目文件,观察日志文件就会发现,两种方式都成功了:
事情是这样的, 最近接手个项目 给它底层从ssm整到springboot2 + mp
由于之前很多xxxdo请求 而我又不想用后缀,
所以就得匹配全部后缀或者无后缀(方法有很多方案自行百度), 然后就狗血的出现了一个问题
继续跟踪
说明实在这一行确定请求的类型的 发现它调用了getHandler方法 继续跟
! 注意 我这里形参的参数类型写的是我自己写的MyDispatcherServlet 这样就能注册上了
运行springboot工程四种方法:
springboot工程的pomxml文件中默认有:
所以可以用下面的方法图像化运行
点击左下角的小窗口,然后右侧会出现 Mavne Projects
或者用命令行运行:
首先进入springboot的工程目录,然后运行 mvn spring-boot:run 命令
springboot工程的pomxml文件中默认的打包形式是jar包
打包方法如下:
运行jar包:
maven默认打包在target目录,进入springboot工程的target目录,然后运行 java -jar xxxjar 命令来运行程序。
修改springboot工程的pomxml文件中的打包形式为war包
之后的打包方法与运行方法与 打包成jar包运行 类似,唯一不同的是运行的命令是 java -jar xxxwar 这样的形式。
在一个Web应用中,通常会采用MVC设计模式实现对应的模型、视图和控制器,其中,视图是用户看到并与之交互的界面。对最初的Web应用来说,视图是由HTML元素组成的静态界面;而后期的Web应用更倾向于使用动态模板技术,从而实现前后端分离和页面的动态数据展示。Spring Boot框架为简化项目的整体开发,提供了一些视图技术支持,并主要推荐整合模板引擎技术实现前端页面的动态化内容。本文对SpringBoot常用的Thymeleaf进行整合。
Thymeleaf是一种现代的基于服务器端的Java模板引擎技术,也是一个优秀的面向Java的XML、XHTML、HTML5页面模板,它具有丰富的标签语言、函数和表达式,在使用Spring Boot框架进行页面设计时,一般会选择 Thymeleaf模板。我们在这里学习Thymeleaf 常用的标签、表达式。
Thymeleaf标签
使用标签只需要加上一个命名空间就可以了。 即修改原html的第二行就可以了。
变量表达式${}主要用于获取上下文中的变量值,示例代码如下。
这是标题
- 使用了Thymeleaf模板的变量表达式${}用来动态获取p标签中的内容 - 如果当前程序没有启动或者当前上下文中不存在title变量,该片段会显示标签默认值“这是标题”; - 如果当前上下文中存在title 变量并且程序已经启动,当前p标签中的默认文本内容将会被tite变量的值所替换,从而达到模板引擎页面数据动态替换的效果。
Thymeleaf为变量所在域提供了一些内置对象
结合上述内置对象的说明,假设要在Thymeleaf模板擎页面中动态获取当前国家信息,可以使用#locale内置对象
选择交量表达式和变量表达式用法类似,一般用于从被选定对象而不是上下文中获取属性值,如果没有选定对象,则和变量表达式一样,示例代码如下。
消息表达式#{}主要用于Thymeleaf模板页面国际化内容的动态替换和展示。使用消息表这式#{}进行国际化设置时,还需要提供一些国际化配置文件。关于消息表达式的使用,下文写国际化时会详细说明。
链接表达式@{}一般用于页面跳转或者资源的引入,在Web开发中占据着非常重要的地位,并且使用也非常频繁。
片段表达式~{}是一种用来将标记片段移动到模板中的方法。其中,最常见的用法是使用th:insert或th:replace 属性插入片段
Spring Boot默认设置了静态资源的访问路径,默认将/所有访问映射到以下目录。
我们创建一个springboot项目用于本次实验。项目名为springboot_01_thyme。java8,springboot266
创建一个LoginController类用于数据替换效果测试。
我们写一个loginhtml进行测试。我们导入一个bootstrap的样式到static/login里面,并且自己定义一些css。
最后我们通过访问>
以上就是关于SpringBoot - resource资源文件的打包配置详解(指定资源文件位置)全部的内容,包括:SpringBoot - resource资源文件的打包配置详解(指定资源文件位置)、SpringBoot学习总结、springboot配置上下文路径有两遍等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)