二、springboot配置文件
但是三种方式,都是一种模板引擎而已,将返回数据转化为 HTML 页面显示,本质上没啥区别,大家对模板引擎有一个了解即可。在项目目录下创建一个config的文件夹,并在中创建application.yaml配置文件,直接在项目目录下创建application.yaml文件。在resources目录下创建config文件夹,并创建配置文件。
查看springboot版本 如何查看spring的版本
查看springboot版本 如何查看spring的版本
SpringB@SpringBootConfigurationoot提供了两种常用的配置文件格式,分别是properties、YML格式。相比于properties来说,YML更加年轻2、查找并加载所有可用初始化器 , 设置到initializers属性中,层级也是更加分明。
首先,在SpringBoot中,有两种配置文件的方式。一种是application.properties,另一种application.yaml(或者是application.yml)。
默认的配置文件是application.properties。
SpringBoot中使用 Redisson 版本冲突导致的类找不到
1 标准输出(一般是显示屏,是用户终端控制台)redisson-spring-boot-starter 排除 redisson-spring-data-xx的依赖(不同版本可能后缀不一样), 然后依赖与spring-boot匹配的版本(见上方git的链接)
这个注解在还有,启动方式:springboot项目会自动生成一个Application启动类,启动该类或者执行该类中的main方法就可以启动项目了;Spring中很重要 ,它对应XML配置中的元素。springboot升级版,报数据库连接超时
模板引擎这个词,咋听起来,有点高大上的意味。springboot升级版,报数据库连接超时:
启动项目,打开浏览器访问 ,即可查看输出结果。1、修改mysql的超时时间为超时,具体方案自行百度。
3、找出所有的应用程序,设置到listeners属性中2、设置springbootDataSource属性(重点介绍)查看源DataSourceConfiguration.class(spring-boot-autoconfigure包中)发现springboot1.X默认采用tomcat连接池(文档实锤,2.X更改为HikariCP),故需要对tomcat连接池进行配置。
springboot启动不是bean最终的版本
我们继续进去这个注解查看1、化配置、自动装配和内嵌的Web,使得Spring应用程序的开发、部署和运行变得更加简单和快捷。
注意 Spring Boot 已经不使用 JSP 了,确实作起来也比较麻烦。但是由于 JSP 用户体量还是比较大的,所以此处还是简单演示下,开发步骤与 FreeMarker / Thymeleaf 基本一致。实例:2、SpringBoot启动不是bean最终的版本,而是通过Spring框架中的@SpringBootApplication注解来实现的。
spring项目升级springboot
Registrar.class 作用:将主启动类所在包及包下面所有子包里面的所有组件扫描到Spring容器 ;插件准备: men er 解决包冲突必备神器。
SpringBoot为我们提供了简化企业级开发绝大多数场景的starte好的,此时我们的就可以注入 GoodsServ 类型的组件,然后调用其方法了。r pom,只要使用了相关场景的spring-boot-starter,相关的技术配置就会被简化甚至不需要配置,就可以得到SpringBoot自动配置的Bean。目标:将原始项目的spring 版本4.3.22.RELEASE,升级为springboot 的2.3.5.RELEASE版本,步骤如下:
在 application.yaml 中加入disconf配置:
在pom中加入了springboot的disconf启动包
从spring升级到springboot并不复杂, 本来springboot就是spring框架的扩展 ,只需要把spring的版本号和springboot中的保持一致,注意下classpath的打包路径和解决掉依赖的冲突包即可
springboot3是稳定坂本嘛
创建类,@import :Spring底层注解@import , 给容器中导入一个组件 GoodsController ,代码如下:你是不是想问springboot3是稳定版本吗?springboot3是稳定版本。相信很多小伙伴到现在还是使用得是JDK8,但是JDK8已经发布很多年了,随着oracle加速JDK版本的发布,现在每半年发布一次,目前的JDK版本已经到了19了。其中JDK11和JDK17是LTS版本,也就是说我们常说的稳定版本。所以springboot3是稳定版本。
简化统一配置文件Spring自动装配原理
依赖管理:SpringBoot支持自动配置和依赖管理,需要注意导入的依赖是否正确,以避免出现冲突或版本不兼容等问题。其中它主要是依赖一个父项目,主要是管理项目的资源过滤及插件!
结论:以后我们导入依赖默认是不需要写版本;但是如果导入的包没有在依赖中管理着就需要手动配置版本了;
SpringBoot将所有的功能场景都抽取出来,做成一个个的starter (启动器),只需要在项目中引入这些starter即可,所有相关的依赖都会导入进来 , 我们要用什么功能就导入什么样的场景启动器即可 ;我们未来也可以自己自定义 starter;
默认的主启动类
@SpringBootApplication
作用:标注在某个类上说明这个类是SpringBoot的主配置类 , Sprin3、找出所有的应用程序,设置到listeners属性中gBoot就应该运行这个类的main方法来启动SpringBoot应用;
进入这个注解:可以看到上面还有很多其他注解!
@ComponentScan
作用:自动扫描并加载符合条件的组件或者bean , 将这个bean定义加载到IOC容器中
这里的 @Configuration,说明这是一个配置类 ,配置类就是对应Spring的xml 配置文件;
里面的 @Component 这就说明,启动类本身也是Spring中的一个组件而已,负责启动应用!
@EnableAutoConfiguration :开启自动配置功能
以前我们需要自己配置的东西,而现在SpringBoot可以自动帮我们配置 ;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效;
点进注解接续查看:
@AutoConfigurationPackage :自动配置包
这个分析完了,退到上一步,继续看
@Import({AutoConfigurationImportSelector.class}) :给容器导入组件 ;
AutoConfigurationImportSelector :自动配置导入选择器,那么它会导入哪些组件的选择器呢?我们点击去这个类看源码:
1、这个类中有一个这样的方法:
2、这个方法又调用了 SpringFactoriesLoader 类的静态方法!我们进入SpringFactoriesLoader类loadFactoryNames() 方法
3、我们继续点击查看 loadSpringFactories 方法
4、发现一个多次出现的文件:spring.factories,全局搜索它
我们根据源头打开spring.factories , 看到了很多自动配置的文件;这就是自动配置根源所在!
可以看到这些一个个的都是JaConfig配置类,而且都注入了一些Bean,可以找一些自己认识的类,看着熟悉一下!
所以,自动配置真正实现是从classpath中搜寻所有的META-INF/spring.factories配置文件 ,并将其中对应的 org.springframework.boot.autoconfigure. 包下的配置项,通过反射实例化为对应标注了 @Configuration的JaConfig形式的IOC容器配置类 , 然后将这些都汇总成为一个实例并加载到IOC容器中。
不简单的方法
我最初以为就是运行了一个main方法,没想到却开启了一个服务;
SpringApplication.run分析
分析该方法主要分两部分,一部分是SpringApplication的实例化,二是run方法的执行
springApplication这个类主要做了以下四件事情:
1、推断应用的类型是普通的项目还是Web项目
run方法流程分析
Spring自动装配原理
实例:其中它主要是依赖一个父项目,主要是管理项目的资源过滤及插件!
以后我们导入依赖默认是不需要写版本;但是如果导入的包没有在依赖中管理着就需要手动配置版本了;
SpringBoot将所有的功能场景都抽取出来,做成一个个的starter (启动器),只需要在项目中引第二种方式,是采取模板引擎的方式。前端的请求,到达 Spring Boot 的后,处理请求,然后将返回数据交给模板引擎。模板引擎负责根据数据生成 HTML 页面,将 HTML 返回给浏览器。入这些starter即可,所有相关的依赖都会导入进来 , 我们要用什么功能就导入什么样的场景启动器即可 ;我们未来也可以自己自定义 starter;
默认的主启动类
@SpringBootApplication
作用:标注在某个类上说明这个类是SpringBoot的主配置类 , SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;
进入这个注解:可以看到上面还有很多其他注解!
@ComponentScan
作用:自动扫描并加载符合条件的组件或者bean , 将这个bean定义加载到IOC容器中
这里的 @Configuration,说明这是一个配置类 ,配置类就是对应Spring的xml 配置文件;
里面的 @Component 这就说明,启动类本身也是Spring中的一个组件而已,负责启动应用!
@EnableAutoConfiguration :开启自动配置功能
以前我们需要自己配置的东西,而现在SpringBoot可以自动帮我们配置 ;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效;
点进注解接续查看:
@AutoConfigurationPackage :自动配置包
这个分析完了,退到上一步,继续看
@Import({AutoConfigurationImportSelector.class}) :给容器导入组件 ;
AutoConfigurationImportSelector :自动配置导入选择器,那么它会导入哪些组件的选择器呢?我们点击去这个类看源码:
1、这个类中有一个这样的方法:
2、这个方法又调用了 SpringFactoriesLoader 类的静态方法!我们进入SpringFactoriesLoader类loadFactoryNames() 方法
3、我们继续点击查看 loadSpringFactories 方法
4、发现一个多次出现的文件:spring.factories,全局搜索它
我们根据源头打开spring.factories , 看到了很多自动配置的文件;这就是自动配置根源所在!
可以看到这些一个个的都是JaConfig配置类,而且都注入了一些B种方式,是后端服务化的方式,也是当前的主流方式。前端是静态的 HTML 页面,通过 Ajax 请求 Spring Boot 的后端接口。 Spring Boot 返回数据一般采用 JSON 格式,前端接收后将数据显示。ean,可以找一些自己认识的类,看着熟悉一下!
所以,自动配置真正实现是从classpath中搜寻所有的META-INF/spring.factories配置文件 ,并将其中对应的 org.springframework.boot.autoconfigure. 包下的配置项,通过反射实例化为对应标注了 @Configuration的JaConfig形式的IOC容器配置类 , 然后将这些都汇总成为一个实例并加载到IOC容器中。
不简单的方法
我最初以为就是运行了一个main方法,没想到却开启了一个服务;
SpringApplication.run分析
分析该方法主要分两部分,一部分是SpringApplication的实例化,二是run方法的执行
springApplication这个类主要做了以下四件事情:
1、推断应用的类型是普通的项目还是Web项目
run方法流程分析
04《Spring Boot 入门教程》使用模板引擎开发 Web 项目
我们回到 SpringBootApplication 注解中继续看。实际上,模板引擎是非常平易近人的技术。譬如大家可能都比较熟悉的 JSP ,就是一种比较典型的模板引擎。
实例:点进去,发现还有一个父依赖当浏览器将请求抛给,处理好数据后,就跳转 JSP 等模板引擎页面。注意在跳转的同时,还会将数据组装好,也交给模板引擎处理。
模板引擎会根据数据,和模板引擎的规则,动态生成 HTML 页面,返回给浏览器显示。
我们使用 Spring Boot 开发 Web 项目,大体上有两种方式。
我个人比较种方式,说一下该方式的几个优点:
本篇是讲模板引擎,也得说说模板引擎的优点,王婆卖瓜不能光夸草莓啊。模板引擎开发的页面,对搜索引擎 SEO 比较友好;还有就是简单的页面,如果用模板引擎开发速度比较快,毕竟模板化的方法,目的就是减少重复提高效率。
Spring Boot 支持的模板引擎种类很多,常见的有 FreeMarker 、 Thymeleaf 、 JSP 。
因为这些模板引擎使用的用户都不少,所以我们逐一介绍下其实现过程。
至于孰优孰劣,请各位看官自行评价。正所谓:尺有所短,寸有所长,各取所爱,万物生长!
本篇我们开发一个商品浏览项目实例。
此处说一个我个人的经验:在做一个项目或一个模块的时候,不要一开始就动手写代码,是谋定而后动。
我们作为程序员,实际上是整个程序世界的总指挥。应该先整体规划,再实现局部。这种总分型的开发方法便于我们理顺思路,提高编码效率!
好的,我们来思考下,实现商品浏览项目实例的整体流程:
整体流程
可以看到,我们是先建立了方法和页面,再去实现其中的具体细节。这样可以让我们的思维保持连贯性和整体性,在做一些页面和方法较多的项目时,会感觉更加顺畅。
我们按整体流程,使用 FreeMarker 模板引擎,来实现商品浏览功能。
使用 Spring Initializr 创建项目,Spring Boot 版本选择 2.2.5 , Group 为 com.imooc , Artifact 为 spring-boot-freemarker ,生成项目后导入 Eclipse 开发环境。
引入 Web 项目及 FreeMarker 模板相关的依赖项,代码如下:
创建类,由于是商品相关的,所以命名为 GoodsController ,代码如下:
我们具体解释下该类的作用。
我们 resource/templates 目录下新建商品页面 goods.ftl ,先不必实现具体功能,代码如下:
此时我们启动项目,然后访问 ,即可显示对应页面内容。
定义商品类 GoodsDo 用来描述商品信息,注意 Do 表示数据模型对象(Data Object),代码如下:
然后我们编写服务类 GoodsServ ,提供获取商品列表的方法。注意此处仅仅是演示模板引擎,并不需要访问数据库,直接返回一个指定内容的商品列表。
此时,我们的就可以注入 GoodsServ 类型的组件,然后调用其方法了。
注意 model.addAttribute("goodsList", goodsServ.getGoodsList()); ,我们将商品列表相关的数据交给模板引擎去处理。
此时我们可以根据 FreeMarker 模板引擎,按模板规则显示商品信息了。
注意我们通过 FreeMarker 的模板语法,输出了商品列表信息。关于 FreeMarker 模板引擎更多的语法规则,感兴趣的同学可以后续查阅更多资料。
Thymeleaf 和 FreeMarker ,都是模板引擎,使用方法基本类似。此处我们仅仅是给出一个范例,不再做过多的解释。
使用 Spring Initializr 创建项目, Spring Boot 版本选择 2.2.5 , Group 为 com.imooc , Artifact 为 spring-boot-thymeleaf ,生成项目后导入 Eclipse 开发环境。
引入 Web 项目及 Thymeleaf 模板相关的依赖项。
创建类, GoodsController , Thymeleaf 直接使用 HTML 作为模板页面,故代码如下:
我们在 resource/templates 目录下新建商品页面 goods.html ,先不必实现具体功能,代码如下:
此时我们启动项目,然后访问 ,即可显示对应页面内容。
商品类 GoodsDo ,服务类 GoodsServ ,这两个类与上面没有区别直接放出代码。
此时我们可以根据 Thymeleaf 模板引擎,按模板规则显示商品信息了。
注意我们通过 Thymeleaf 的模板语法,输出了商品列表信息。关于 Thymeleaf 模板引擎更多的语法规则,感兴趣的同学可以后续查阅更多资料。
到此,大家基本上也能发现,这两种方式除了模板页面文件内容不同,其他地方基本都是一模一样的。
也就是说,模板引擎主要负责通过一些模板标签,将返回的数据解析为网页。
使用 Spring Initializr 创建项目, Spring Boot 版本选择 2.2.5 , Group 为 com.imooc , Artifact 为 spring-boot-jsp ,生成项目后导入 Eclipse 开发环境。
引入 Web 项目及 JSP 模板相关的依赖项。
手工添加 src/main/webapp 及子目录如下,同时目录下放一个 goods.jsp 用于测试。注意该目录是一个 Source Folder 源代码目录,不是普通文件夹目录。
spring-boot-jsp 项目结构
注意,我们还需要添加一个视图解析器,实现 JSP 页面往指定目录跳转。
此时我们启动项目,然后访问 ,即可显示对应页面内容。
商品类 GoodsDo ,服务类 GoodsServ ,这两个类与上面没有区别直接放出代码。
此时我们可以根据 JSP 模板引擎,按模板规则显示商品信息了。
注意我们通过 JSP 的模板语法,输出了商品列表信息。关于 JSP 模板引擎更多的语法规则,感兴趣的同学可以后续查阅更多资料。
大家应该也发现了, FreeMarker 和 Thymeleaf 的用法几乎是一模一样的,而 JSP 还需要手工添加一些目录和配置。
三种方式各有优劣, FreeMarker 模板语法比较简洁, Thymeleaf 可以直接使用 HTML 作为模板文件, JSP 用户群体广泛。
springboot升级版,报数据库连接超时
作用:SpringBoot的配置类 ,标注在某个类上 , 表示这是一个SpringBoot的配置类;springboot升级版,springboot-boot-starter-xxx :就是spring-boot的场景启动器报数据库连接超时:
1、修改mysql的超时时间为超时,具体方案自行百度。
2、设置springbootDataSource属性(重点介绍)查看源DataSourceConfigurat4、推断并设置main方法的定义类,找到运行的主类ion.class(spring-boot-autoconfigure包中)发现springboot1.X默认采用tomcat连接池(文档实锤,2.X更改为HikariCP),故需要对tomcat连接池进行配置。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 836084111@qq.com 举报,一经查实,本站将立刻删除。