在此记录一下这十几天的学习情况, 卡在模板引擎这里已经是四天了. 对 Springboot 的配置有一个比较深刻的认识, 在此和大家分享一下初学者入门 Spring Boot 的注意事项, 如果是初学 SpringBoot, 或者有意向学习 Springboot 的朋友, 这篇文章可以简单的来帮助你, 处理一些不必要的麻烦.
开发环境:
- IDea
- JDK1.8
- SpringBoot2+
- Maven3.5
1, 配置 Maven
首先我们打开 IdeA 我们从新建一个项目开始. SpringBoot 是基于 Maven 来管理 Jar 包的. 首先我们需要在 Idea 中配置我们 Maven 的本地仓库位置
这是我本地 Maven 的安装目录, Idea 集成了 Maven, 其实是不用配置的, 这里简述一下配置 Maven 的步骤
打开 Maven 安装目录下 /conf / 文件夹下的 settings.xml
这个是 Maven 的配置文件, 我们可以在其中的 如下.
将上面的默认本地仓库位置做一个替换, 可以从上图看到我们的本地仓库位置. 之后我们在项目中, 就可以通过 Pom.xml 将我们需要的 JAr 配置到 Maven 中, 并且由 Maven 来管理我们的 Jar 包
注意, 每次更新 Pom 文件的时候, 建议刷新一下当前的 Maven 项目.
首先我们来配置自己的本地仓库 , 我们在 Idea 的主界面打开设置
注意, 如果是在项目页面进行设置的话生效的是当前的项目, 如果是在 Idea 主界面进行设置的话, 那么生效的是整个 IDea
我们在搜索框中输入 Maven 然后出现以下界面, 找到自己的 Maven 的安装目录
并且指定自己的 Maven 配置文件
然后我们创建一个 SpringBoot 的项目, 幸运的是, SpringBoot 支持快速构建 Maven 项目我们
注意: 这一步需要联网来下载组件!
我们可以在如下的界面选择我们项目需要引入的组件, 并且来引入需要的 Start
我们这里选用的 tymeleaf 的模板引擎和 web 的支持
项目骨架:
静态资源访问的问题, SpringBoot 自动将 如下几个文件夹作为整个项目的静态资源文件夹优先级自高至低如下
- "classpath:/META-INF/resources/",
- "classpath:/resources/",
- "classpath:/static/",
- "classpath:/public/"
"/": 当前项目的根路径
我们将准备好的图片分别放到如上几个文件夹上, 用来测试访问路径优先级:
同时: 我们通过查看 SpringBoot 自动配置中的 Thymeleaf 源码得知以下:
解析前缀以及后缀和默认路径, 同时, 文件名为 Index.html 的文件默认被识别为当前项目的主页:
区别于 Jsp 的不同是 Thymeleaf 使用. HTML 后缀的页面来进行展示, 我们需要在页面上引入 thymeleaf 的命名空间
xmlns:th="http://www.thymeleaf.org" 你不引入也是可以的但是没有快捷提示!
我们在页面上 添加了一个 Img 同时启动 SpringBoot
启动成功:
可以看到图片可以正常的访问, 同时 Thymeleaf 解析的就是我们类路径下的 templates 文件夹, 同时为 index.HTML 的页面会被解析为首页.
篇幅有限, 这里仅对 SpringBoot 静态资源有一个简单的介绍, 有兴趣的小伙伴可以将图片路径做个更改一一尝试.
并且这里有一点需要注意的是, 在是同 thymeleaf 引入资源的时候不需要加 当前静态资源文件夹的名字, 例如
如上简单的页面访问我们已经搞定了, 现在解决一下 拦截器和拓展 Spring Boot 配置时 静态资源失效的问题
首先我们先创建一个自定义的拦截器, 注意, 是在 SpringBoot 启动类同级别的目录下创建的, 这里牵扯了一个 SpringBoot 的自动装配原理, 默认扫描了 SpringBoot 启动类同级别的文件和其子包, 感兴趣的同学可以去看一下 SpringBoot 的自动装配原理.
然后我们在自定义的拦截器中使用日志来记录, 这里是使用了 slf4J 和其实现 logbak
层次图如下
想让我们的自定义拦截器生效, 还不行, 我们需要写一个自定义配置类来完成我们的操作 如下图, 有两种方式来帮助我们拓展配置, 注意, 这是在 SpringBoot2.0 之后 废弃了原有的 WebMvcConfigurerAdapter
这里选用的是第一种方法, 同时对拦截器进行配置拦截所有资源测试日志输出. 同时还可以对不需要拦截的资源做排除, 注意下这个形参的参数类型. 可以传入数组
之后便是对拦截器的测试:
我们在浏览器访问默认端口后 发现页面 404 观看控制台后发现 拦截器生效 , 即日志已经打印.
那么我们的 Index 首页去哪了呢?
我们首先看一下访问不到的页面:
后来我们知道是拦截器在作怪, 我们添加一个视图映射就可以解决找不到主页的问题了:
成功访问:
成功访问, 这次的心得就分享到这里了, 希望能帮到大家, 一定要注意上面我说到的知识点, 如果对哪一个知识点不熟悉的话, 一定要多查资料, 多思考, 想想为什么这么做,
今天也正好是大家初一, 给大家拜个年, 新年快乐. 祝大家在新的一年里, 编译一遍过, 运行无 Bug, 最后有一句话送给大家: 不积跬步, 无以至千里
Java 交流群 682677231
来源: https://www.cnblogs.com/Mzcc/p/10352466.html