文章目录
目录
一、Thymeleaf
1.什么是Thymeleaf?
2.什么是模版引擎?
3.JAVA中的SPI(Service Provider interface)机制?
4.META-INF目录是干嘛用的?
总结
前言
一、Thymeleaf
1.什么是Thymeleaf?
hymeleaf是试用于Web和独立环境的现代服务器端Java模版引擎
- 目的:它的主要目标是为您的开发工作流程带来优雅自然的模版-HTML可以再浏览器中正确显示,也可以作为静态原型工作,从而可以在开发团队中加强合作
- Thymeleaf拥有适用于Spring Framework模块,与喜欢的工具的大量集成以及插入我自己的功能,对于HTML5JVM Web来来说,Thymelef是理想的选择--尽快它还有很多工作要做
- 优点:
- 动静分离:Thymeleaf选用html作为模版页,这是任何一块其他模版引擎做不到的,它能使用html通过一些特定标签语法代表其含义,但是未破坏文件接口,即使没有网络,不通过后端渲染也能在浏览器中打开,大大方便界面的测试和修改
- Thymeleaf提供标准和spring标准两种语言,可以直接套用模版实现JSTL,OGNL表达式效果,避免每天套模版,改JSTL,改标签的困扰,同事开发人员也可以拓展和创建自定义的方言
- JSTL:是java标准标签库,是jsp标准集合,封装了jsp应用的通用核心功能,根据JSTL标签所提供的功能,可以将其分为五个类别:核心标签,格式化标签,SQL标签,XML标签,JSTL函数
- OGNL:是对象图导航语言,是一种强大的表达式语言,它相当于一个上下文(OgnlContext)概念,就是一个Map结构(教师 老师 学生)
2.什么是模版引擎?
(在这里指的是用于Web开发的模版引擎)是为了使用户界面于业务数据(内容)分离而产生的,他可以生成特定格式的文档.用于网站的模版引擎就会生成一个标准的html文档.从字面上理解末班引擎,,最重要的就是模版二字,这个意思就是做好一个模版后套入相对应位置的数据,最终通过Htmdull
模版引擎的理解:可以形象的做一个比喻:开会!相信你在上学初高中的时候每次开会都要提取布置场地,拿上板凳,收拾场地,而你让了大学之后每次开会再也并不用去机操场了,每次开会都去学校的大会议室,桌子板凳,桌子板凳音响主席团齐全,来个人即可,还可以复用.模拟引擎的功能就类似于我们会议室开会一样开箱即用,将模版设计好之后直接填充数据即可而不需要重新设计整个页面.提高页面和代码的复用性.
3.JAVA中的SPI(Service Provider interface)机制?
- 是一种软件设计模式,用与在应用程序中动态的发现和加载组件.SPI的思想是:定义一个接口或者抽象类,然后通过在classpath中定义实现该接口的类来实现对组件的动态发现和加载.
- SPI的主要目的是解决在应用程序中使用可插拔组件的问题.比如,一个应用程序可能需要使用不同的日志框架或者数据库连接池,但是这些组件的选择可能取决于运行时的条件.通过使用SPI,应用程序可以在运行时发现并加载适当的组件,而无需在代码中硬编码这些组件的实现类
- 在java中SPI的实现方式是通过在META-INF/services目录下创建一个以服务接口全限定名为名字的文件,文件中包含实现该类的全限定名.当应用程序启动时,java的SPI机制会自动扫描classpath中的这些文件,并根据文件中指定的类名来加载实现类
- 通过使用SPI,应用程序可以实现更灵活,可拓展的结构,同事也可以避免硬编码依赖关系和增加代码的可维护性
4.META-INF目录是干嘛用的?
- jar文件:开发中可以直接用java class文件来运行程序,但是不太方便,所以出现了jar文件来提供发布和运行,jar文件实际上是class文件的zip压缩存档,有很多工具都可以操控这种格式的文件,所以jar文件本身并不能表达应用程序的便签信息.
- 为了提供存档便签信息,出现了Manifest.mf文件,jar文件中有一个特定的目录来存放标签信息:META-INF目录,主要应关注其中
- 一个名叫manifest.mf的文件,它包含了jar文件的内容描述,在应用程序运行时向JVM提供应用程序的信息
- META-INF相当于一个信息包,目录中的文件和目录获得Java 2 平台的认可与解释,用来配置应用程序,扩展程序,类加载器和服务manifest.mf文件,在用jar打包时自动生成
- jar文件中都有一个默认产生的META-INF目录和其中的manifest.mf文件 使用jar命令可以直接产生META-INF目录和manifest.mf文件
- 说白了META-INF目录实际上就是描述jar文件中的信息的一个目录,目录中除了manifest.mf文件之外其实还是可以配置很多信息的,这些文件都是在应用程序运行的过程中向其提供jar文件的内容描述的.
总结
参考和学习文档:
Thymeleaf一篇就够了_Big sai的博客-CSDN博客
https://blog.csdn.net/qq_38449518/article/details/82414069?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168619468216800225547647%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168619468216800225547647&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-82414069-null-null.142^v88^control_2,239^v2^insert_chatgpt&utm_term=meta-inf%E6%98%AF%E4%BB%80%E4%B9%88%E6%96%87%E4%BB%B6&spm=1018.2226.3001.4187
感谢尚硅谷spring6的文字教程