Springboot学习心得

1.SpringBoot简介

1.1.什么是Spring Boot

SpringBoot是一个可使用Java构建微服务的微框架。是Spring框架及其社区对“约定优先于配置”理念的最佳实践。Sping Boot的设计目的是让你尽可能快地启动和运行,而无需预先配置Spring。Spring Boot以以一种固定的方式来构建可用于生产级别的应用程序。
一般把Spring Boot称为搭建程序的脚手架或者说是便捷搭建基于Spring的工程脚手架。其最主要作用就是帮助开发人员快速的构建庞大的spring项目,并且尽可能的减少一切xml配置,做到开箱即用,迅速上手,让开发人员关注业务而非配置。

1.2.为什么要学习Spring Boot

java一直被人诟病的一点就是臃肿、麻烦。当我们还在辛苦的搭建项目时,可能Python程序员已经把功能写好了,究其原因注意时两点:

  • 复杂的配置

    项目各种配置其实是开发时的损耗,因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以写配置挤占了写应用逻辑的时间。

  • 混乱的依赖管理

    项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这实在棘手。而且依赖管理也是种耗损,添加依赖不是写应用程序代码。一旦选错了版本,随之而来的不兼容问题毫无疑问会是生产力杀手。

而Spring Boot让这一切成为过去!
Spring Boot简化了基于Spring的应用开发,只需要“run”就能创建一个独立的、生产级别的Spring应用。Spring Boot为Spring平台及第三方库提供了开箱即用的设置(提供默认设置,存放默认配置的包就是启动器starter),这样我们就可以简单的开始。多数Spring Boot应用只需要很少的Spring配置。
我们可以使用Spring Boot创建java应用,并使用java-jar启动它,就可以得到一个生产级别的web工程。

1.3.Spring Boot的特点

  • 创建独立的Spring应用,为所有Spring的开发者提供一个非常快速的、广泛接受的入门体验。
  • 直接嵌入应用服务器,如tomcat、jetty、undertow等;不需要去部署war包。
  • 提供固定的启动器依赖去简化主键配置;实现开箱即用(启动器starter-其实就是Spring Boot提供的一个jar包),通过自己设置参数(.properies或.yml的配置文件),即可快速使用。
  • 自动的配置Spring和其它有需要的第三方依赖。
  • 提供了一些大型项目中常见的肺功能性特性,如内嵌服务器、安全、指标、健康检测、外部化配置等。
  • 绝对没有代码生成,也无需XML配置。

2.创建SpringBoot项目

以idea为例
在这里插入图片描述
在这里插入图片描述
点击完成在这里插入图片描述
创建完成之后在pom文件中添加具体的依赖
在这里插入图片描述
创建启动引导类
在这里插入图片描述
编写处理器
@RestController标注它是一个处理器,@RestController是一个组合注解,组合了@ResponseBody,所以这个类的所有方法里面的返回结果都当作一个字符内容输出。
在这里插入图片描述
运行启动引导类
在这里插入图片描述
启动成功后访问localhost:8080/hello,spring-boot-starter-web默认端口号是8080,映射路径是hello。如果启动时出现端口号冲突可以在配置文件中更改端口号在这里插入图片描述
以上就是通过Spring Boot工程添加启动器依赖和创建启动引导类实现快速创建web工程。

3.java代码方式配置

3.1.Spring配置历史

在Spring3.0开始,Spring官方就已经开始推荐使用java配置来代替传统的xml配置了,我们不妨回顾一下Spring的历史:

  • Spring1.0时代
    在此时因为jdk1.5刚刚出来,注解开发尚未盛行,因此一切Spring配置都是xml格式。
  • Spring2.0时代
    Spring引入了注解开发,但是因为并不完善,因此并未完全替代xml,此时的程序员往往把xml与注解进行结合。
  • Spring3.0及以后
    3.0以后Spring的注解已经非常完善了,因此Spring推荐大家使用完全的java配置来替代以前的xml,不过似乎在国内并未推广盛行。然后当Spring Boot来临,人们才慢慢认识到java配置的优雅。

3.2.尝试java配置

java配置主要靠java类和一些注解,比较常用的注解有:

  • @Configuration:声明一个类最为配置类,代替xml文件
  • @Bean:声明在方法上,将方法的返回值加入Bean容器,代替标签
  • @Value:属性注入
  • @PropertySouce:指定外部文件

首先在pom文件中添加依赖
在这里插入图片描述
创建数据库
在resources下创建配置文件jdbc.properties设置数据库的驱动、url、用户名和密码
在这里插入图片描述
编写配置类,加入注解@Configuration和@PropertySource
在这里插入图片描述
在处理器中注入DataSource并输出,断点测试。可以在控制台看到用户名、密码、路径、驱动类都是在排至文件中指定的。说明用java代码配置是可以被Spring Boot辨别注入的。
在这里插入图片描述

3.3.Spring Boot属性注入方式

使用@ConfigurationProperties实现Spring Boot配置文件配置项读取和应用,该注解可以将Spring Boot的配置文件(默认必须为application.properties或者application.yml)中的配置项读取到一个对象中。

将jdbc.properties修改名称为application.properties;
创建配置项类JdbcProperties类,在该类上面添加@ConfigurationProperties
在这里插入图片描述
如果出现如下提示,项目也可以运行
在这里插入图片描述
如果要去掉上述提示,可以在pom文件中添加如下依赖
在这里插入图片描述
将JdbcProperties对象注入到JdbcConfig;
在这里插入图片描述
测试依然可以看到参数信息
在这里插入图片描述
@ConfigurationProperties和@Value比较的优势在于

  • Relaxed bingding:松散绑定
    不严格要求属性文件中的属性名与成员变量名一致。支持驼峰,中划线,下划线等等转换,甚至支持对象引导。比如:user.friend.name 代表的是user对象中的friend属性中的name属性,显然friend也是对象。@Value注解就很难完成这样的注入方式。
  • meta-data support:元素据支持,帮助IDE生成属性提示(写开源框架会用到)。

3.4.更优雅的注入

事实上,如果一段属性只有一个Bean需要使用,我们无需将其注入到一个类(JdbcProperties,将该类上的所有注解去掉)中。而是直接在需要的地方声明即可;再次修改JdbcConfig类为如下代码:
在这里插入图片描述
直接把@ConfigurationProperties(prefix = “jdbc”)声明在需要使用的@Bean的方法上,然后Spring Boot就会自动调用DataSource的set方法,然后完成注入。使用的前提是:该类必须有对应属性的set方法!

3.5.yml配置文件

配置文件除了可以使用application.properties类型,还可以使用后缀名为:.yml或者.yaml的类型,也就是:application.yml或者application.yaml
正如YMAL所表示的YAML Ain’t Markup Language,YAML是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。
基本格式:

  • 树状层级结构展示配置项
  • 配置项之间如果有关系的话需要分行空两格
  • 配置项如果有值的话,需要在:之后空一格再写配置项值

把application.properties修改为application.yml
在这里插入图片描述
多个yml配置文件在Spring boot中是被允许的。这些配置文件的名称必须为application-***.yml,并且这些配置文件必须要在application.yml配置文件中激活之后才能使用。
在这里插入图片描述
测试Controller是否能读取application-def.yml中的配置项
在这里插入图片描述
配置项的输出
在这里插入图片描述
如果properties和 yml配置文件同时存在Spring Boot项目中;那么这两类配置文件都有效。在两个配置文件中如果存在同名的配置项的话会以properties文件的为主。

4.自动配置原理

5.Spring Boot实践

5.1.Lombok

lombok是一个插件工具包;提供了一些注解@Data、@Getter等去简化实体类中的构造方法、get/set等方法的编写。

在IDEA中安装lombok插件;
在这里插入图片描述
添加lombok对应的依赖到pom文件中
在这里插入图片描述
改造实体类使用lomok注解
在这里插入图片描述
@Data:自动提供getter和setter、hashCode、equals、toString等方法
@Getter: 自动提供getter方法
@Setter: 自动提供setter方法
@slf4j:自动在bean中提供log变量,其实用的是Slf4j的日志功能

5.2.整合SpringMVC

5.2.1.修改端口号

在这里插入图片描述

5.2.2.访问静态资源

Spring Boot项目中存放资源的目录有四个
在这里插入图片描述
在resources下创建static目录并放入静态资源
在这里插入图片描述
我在static目录下放入一个莱昂纳多的照片,然后就可以直接访问这个照片
在这里插入图片描述

5.2.3.添加拦截器

拦截器不是一个普通属性,而是一个类,所以就要用到java配置方式了。在SpringBoot官方文档中有这么一段说明:
如果你想要保持Spring Boot的一些默认MVC特征,同时邮箱自定义一些MVC配置(包括:拦截器,格式化器,视图控制器,消息转化器 等等),你应该让一个类实现webMvcConfigurer,并且添加@Configuration注解,但是千万不要加@EnablewebMvc注解。如果你想要自定义HandlerMapping、HandlerAdapter、ExceptionResolver等组件,你可以创建一个webMvcRegistrationsAdapter实例来提供以上组件。
总结:通过实现webMvcConfigurer并添加@Configuration注解来实现自定义部分SpringMvc配置。

编写拦截器(实现HandlerInterceptor)
在这里插入图片描述
编写配置类实现WebMvcConfigurer,添加拦截器
在这里插入图片描述
拦截所有的请求地址,然后在控制台输出前置,后置,完成时
在这里插入图片描述

5.3.整合事务和连接池

配置Spring Boot自带默认的hikari数据库连接池和使用@Transactional注解进行事务配置

1.事务配置
添加事务相关的启动器依赖,mysql相关依赖;
在pom文件中添加如下依赖
在这里插入图片描述
添加数据库驱动,我们选择MySQL
在这里插入图片描述
使用事务注解@Transactional添加到方法上
在这里插入图片描述
2.数据库连接池hikari配置只需要在application配置文件中指定数据库相关参数
在这里插入图片描述

5.4.整合mybatis

在pom文件中加入如下依赖
这个启动器是由mybatis官方编写的在这里插入图片描述
在application配置文件中配置mybatis
在这里插入图片描述
当然,大家还需要在resources中建立相应的文件夹和MyBatis相关配置文件,让其生效。mybatis-config.xml里边是mybatis的配置文件,mapper是映射文件,大家自行编写。
最后在启动引导类中扫描所有的业务dao
在这里插入图片描述
整合测试
创建数据库springboot_test
在这里插入图片描述
创建包entity、dao、service。resources中建立相应的文件夹用于写sql语句,MyBatis相关配置文件,也可以用注解的方式直接写在mapper文件里。
在这里插入图片描述
在HelloController中编写一个方法,返回数据库中的所有信息
在这里插入图片描述
然后访问这个路径
在这里插入图片描述

5.5.整合Junit

添加启动依赖spring-boot-starter-test
在这里插入图片描述
在SpringBoot项目中如果编写测试类则必须在测试类上面添加@SpringBootTest
在这里插入图片描述

5.6.整合Redis

添加启动器依赖
在这里插入图片描述
配置applixation.yml文件中修改redis的连接参数;
在这里插入图片描述
启动redis
在这里插入图片描述
编写测试类RedisTest操作redis中5种数据类型(string/hash/list/set/sorted set)
在这里插入图片描述
在这里插入图片描述
运行测试类
在这里插入图片描述
也可以在cmd上查看
在这里插入图片描述

6.Spring Boot项目部署

将Spring Boot项目使用maven指令打成jar包
1.需要添加打包组件将项目中的资源、配置、依赖打包到一个jar包中;
添加打包组件,要放在dependency外围
在这里插入图片描述
可以使用package,因为不需要测试所以把test去掉
在这里插入图片描述
运行完成后找到jar包的位置
在这里插入图片描述
然后打开cmd来运行这个jar包。命令为 java -jar 包名
在这里插入图片描述
运行成功之后就可以访问项目中的方法
在这里插入图片描述

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot在线互动学习网站设计是一个基于SpringBoot框架的在线学习平台,旨在为用户提供一个便捷、高效的学习环境。该网站采用了前后端分离的设计思路,前端使用Vue.js框架搭建,后端则使用SpringBoot进行开发。通过这种方式,可以实现前后端的独立开发和部署,提高开发效率。该网站主要包括以下几个功能模块:用户注册与登录:用户可以在网站上注册账号并登录,登录后可以查看个人信息、修改密码等。课程浏览与搜索:网站提供了丰富的在线课程资源,用户可以根据自己的需求进行浏览和搜索。同时,网站还提供了课程分类和标签功能,方便用户快速找到感兴趣的课程。课程学习:用户可以在线观看课程视频,同时还可以查看课程资料、下载课件等。在学习过程中,用户可以随时提问,与其他学习者互动交流。个人中心:用户可以在个人中心查看自己的学习进度、收藏的课程、参与的讨论等,方便用户管理自己的学习计划。社区互动:网站提供了一个在线社区,用户可以在这里发表帖子、回复他人的帖子,分享学习心得和经验。后台管理系统:网站还提供了一个后台管理系统,方便管理员对课程、用户等信息进行管理和维护。总之,SpringBoot在线互动学习网站设计为用户提供了一个便捷、高效的在线学习平台,帮助用户更好地学习和成长。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值