SpringBoot就是这么简单

SpringBoot——创建一个简单的SpringBoot项目 OK,至此,我们一个简单的Spring Boot工程已经创建出来了,并且成功的从浏览器中访问到了,但是为什么它最终会跑起来呢?想必小伙伴们还有许多疑问,我们来分析下。 阅读详情

一、SpringBoot入门

今天在慕课网中看见了Spring Boot这么一个教程,这个Spring Boot作为JavaWeb的学习者肯定至少会听过,但我是不知道他是什么玩意。

只是大概了解过他是用起来很方便,不用什么配置的。于是我就花了点时间去跟着学习了。

视频地址:http://www.imooc.com/learn/767

教程中的代码:https://gitee.com/liaoshixiong/girl

1.1SpringBoot启动

在教程中,启动SpirngBoot有三种方式:

  • 在idea中直接使用启动(最常用)
  • 使用mvn 命令来启动
  • 使用mvn编译,而后在class目录生成jar包,使用Java命令来启动

1.2项目属性配置

使用SpringBoot作为我们的框架,连Tomcat都不用自己配置。Tomcat默认的端口是8080。那如果我们要改端口的话,怎么改呢??项目中可能有一些属性变量,那怎么配置呢???

SpringBoot是提供了application.properties这种配置文件供我们使用的。

但是,我们可以有更好的配置方式,使用yml文件,这种配置文件使用起来就更加简洁了。

在yml文件中配置属性,那么我们在Controller中可以使用@value属性来进行获取。

如果我们的配置属性是有规律的(是分类的),比如为System系统配置的属性,我们可以创建一个Java类来进行管理。

那么在获取的时候就不需要使用@value属性来分别获取了。直接获取Java类的成员变量就行了。

当然了,这里涉及到了两个注解:

  • @configurationProperties
  • @Component

再举个例子,我们的生产环境和开发环境的配置变量很有可能是不一样的,比如:我们的path变量在开发环境中是:http://localhost:8080。而我们的生产环境中的path路径是:zhognfucheng.site。这就造成了差异,在springBoot中,这种差异就很好解决了。

  • 可以将开发环境的配置文件和生产环境的配置文件分开,使用总配置文件指定使用的是哪个配置文件。
  • 在使用java变量启动Springboot项目的时候,可以指定使用哪个配置文件。

二、回顾

2.1Controller的使用

SpringBoot已经不推荐使用JSP了,推荐使用模版来返回页面。thymeleaf这个模版,如果在返回页面的时候出错了,看看是不是没有使用模版。

@RestController = @Controller + @ResponseBody

2.2统一处理异常

统一处理异常我在Struts2、springMVC的时候都已经接触过了,方法都是类似的。定义一个自己系统的异常,为了更好地排查出错误所在。

而这个课程的统一处理异常我又学到了不少的东西:

  • 我们在Controller一般返回的是JSON数据给前端页面,如果出现了异常,你单独抛出了异常,如果没有做任何的处理,返回的JSON格式一定和成功的访问的是不一样的,那么这就会造成前台在解析的时候可能会有混乱。为了解决这种情况,我们可以单独封装一个类来进行返回,类的成员变量:code,message,data。有了这个类,那么返回的JSON格式就是相同的了。
  • 前边说到了返回类的code,这个code最好就不要单独写出来。可以使用一个枚举来进行维护。这样的话就非常方便我们去操作了。
  • service抛出自定义异常、controller也抛出自定义异常。由Spring的异常处理器来进行捕获、对其进行输出、返回JSON给前台页面。

2.3AOP

SpringBoot环境下使用AOP,也是需要导入maven坐标的。知识点都和spring学习的差不多…

使用日志记录可以使用sl4jlog,这个是Spring自带的。

在返回给浏览器前记录返回的数据:

三、知新

3.1 SpringData JPA

SpringData JPA直接倒是听过,但是没了解过。课程说它就是一个标准,能够方便我们对数据库的CURD。

也去网上看了些资料,它的默认实现是Hibernate,因此,使用JPA,就相当于使用Hibernate了。

我认为它实际上就是封装了Hibernate的API,另Hibernate的开发又更加简单了。

创建一个接口,实现JPA所给出的接口,那么我们自己创建的接口就有了JPA也就是Hibernate的API了。

课程中使用的是RESTful风格的API实现增删改查:

3.2IDEA类似与POSTMAN

视频作者使用的是POSTMAN软件来进行对http请求的测试的,在评论留言说IDEA也有这样的功能:

idea 有个 rest client 可以代替postman Tools -> Test RESTful web service

我也顺利找到了..

既然是使用了RESTful的风格,那么在Controller了就可以使用GetMapping、PutMapping、DeleteMapping这样的注解了。

3.3单元测试

在service层做单元测试的和我之前学过的单元测试是一样的,就是autowired一个service对象然后就测试方法就行了。

而测试Controller、在教程中也称之为测试API,这就是我第一次接触了。测试API其实就是模拟使用HTTP来进行测试。

使用到了MOCK这么一个对象来帮我们进行测试:

还有要注意的是:如果使用mvn来进行打包的话,那么打包的时候会自动帮我们进行单元测试的。因此,我们有的时候不想他打包的时候进行单元测试,就需要写以下的参数了:

3.4热部署和热加载

在学习完上面SpringBoot以后,我觉得并不过瘾、随后又发现了一个课程:http://www.imooc.com/learn/915

在标题上写着的是SpringBoot和热部署。于是我又进去学习了。

好的,回到热部署和热加载。——

热部署和热加载这两个名词其实我刚开始是搞不清的,不过这两个名词我都是听过的。因为我在Idea中使用了JRebel这个插件了,了解了大概的。

热部署代表的是:我们不需要重启服务器,能够将新war包替换旧的war包。

热加载代表的是:我们不需要重启服务器,就能够类检测得到,重新生成类的字节码文件

无论是热部署或者是热加载、都是基于Java类加载器来完成的。

3.4.1Java类加载过程

Java文件被编译成字节码文件、classloader将字节码文件放在JVM上运行。

验证阶段:字节码文件不会对JVM造成危害

准备阶段:是会赋初始值,并不是程序中的值。比如:int=0

解析阶段:符号引用变成直接引用

初始化阶段:初始化程序的值、有5个情况会导致执行初始化时机:new、reflect、先初始化父类再初始化子类、main方法、JDK1.7动态语言 ref_

final修饰的并不会触发,因为他会放在常量池中。

在里边还有使用java代码的时候来实现热加载的,我就没有去敲了。用到再回过去吧。!

3.4.2Tomcat热部署

tomcat 可以使用3种方式实现热部署:

  1. 直接启动tomcat后再把项目放进webapp

  2. 修改servlet.xml中,context标签中加入属性实现

  3. 通过自定义xml文件,放在localhost文件下面。我觉得就是第二点的延伸

3.4.3SpringBoot热部署

springBoot热部署3种方式:
1、在plugin标签中加入插件
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>springloaded</artifactId>
        <version>1.2.6.RELEASE</version>
    </dependency>
</dependencies>

进入pom文件的目录输入 mvn spring-boot:run启动

2、启动的加入参数 引用springloaded jar包
    -javaagent:'jar包路径' -noverify


3、pom文件加入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

2018年1月2日15:02:13

最后根据下面这篇博文来使用SpringBoot热部署:http://blog.youkuaiyun.com/u013938484/article/details/77541050

值得注意的是:在IDEA下不是自动编译的,因此是需要按Ctrl+F9才能实现!

四、扩展阅读

后来我使用了SpringBoot搭建了一个简单的项目,从中也遇到了不少的问题和相关的没有接触到的知识点。下面我会给出当时搜索到的资料和遇到的问题以及解决方案

4.1 SpringBoot教程参考资料:

4.2 SpringBoot遇到的问题以及解决资料

五、最后

SpringBoot能使我们简化繁琐的配置,简化Maven包的依赖(缺点:同时加入一些我们不需要的包)。总体来看的是一个非常好用的框架(集成了很多有用的功能,与其他框架整合十分方便),学习成本很低(如果学过SpringMVC,分分钟就上手),非常合适用来搭建环境。

如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y

SpringBoot实战教程-springboot概论 Spring Boot 是一个快速开发框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,以及自动配置。内置web容器,帮助开发者能够实现快速开发,简化了应用系统的初始搭建以及开发过程。 阅读详情

相关推荐

SpringBoot从yml配置文件中读常用参数值实例方法

在本篇文章里小编给大家整理了关于SpringBoot从yml配置文件中读常用参数值实例方法,有需要的朋友们学习下。

SpringBoot 配置文件属性获取

1. 获取application.yml或者application.properties中的单个属性 1.1 在application.yml中自定义属性 spring: application: name: spring-boot-study server: port: 10000 prop: name: z3 age: 21 1.2 在Controller中获取属性 ...

Chdaring的博客 6493

激光光束质量评估与光斑尺寸计算:从理论到MATLAB实践

本文详细解析激光光束质量评估与光斑尺寸计算的理论基础及MATLAB实践方法,重点介绍M²因子的测量与应用。通过高斯光束模型、CCD成像法和MATLAB算法实现,帮助读者掌握从理论到实践的完整流程,提升激光系统调试与评估能力。

weixin_29083373的博客 450

SpringBoot 属性配置中获取值

在配置文件中定义属性的值,然后再获取,在这里做一个总结,首先,在application.yml文件中定义端口和属性的值,当然,在.application.properties文件中也能定义,只是格式不同而已: appliaction.yml: server: port: 8081 cubSize: B age: 18 然后再定义一个controller,用@Value这个注解来获取...

xusheng_Mr的博客 9939

Arduino for ESP32-----ESP-NOW介绍及使用

ESP-NOWESP-NOW介绍ESP-NOW支持以下特性ESP-NOW技术也存在以下局限性获取ESP32的MAC地址ESP-NOW单向通信(One-way communication)ESP32单板间的双向通信一对多通信(一发多收)一对多通信(多发一收) ESP-NOW介绍 ESP-NOW是一种由Espressif开发的协议,可以让多个设备在不使用Wi-Fi的情况下相互通信。该协议类似于低功耗的2.4GHz无线连接。设备之间的配对需要在通信之前完成。配对完成后,连接是安全的、点对点的,不需要握手。这意味着

Better_man1的博客 2万+

Spring Boot快速入门---(二)spring boot的项目属性配置及Controller的使用

三、项目属性配置 1.@Value修改application.properties配置文件为application.yml在其中填写 可通过@Value来获取值 2.@Component和@ConfigurationProperties 四、Controller的使用  1.Controller    2.@RequestMapping和RestController    ...

Mind_programmonkey的博客 720

ESP32-S3 SPI驱动SD卡与FATFS文件系统实践

SPI(串行外设接口)是嵌入式系统中常用的同步串行通信协议,通过主从架构实现全双工通信。其工作原理基于时钟同步和数据线传输,具有接线简单、占用引脚少的优势。在存储扩展场景中,SPI模式可驱动SD卡实现大容量数据存储,配合FATFS文件系统可提供标准化的文件管理能力。ESP32-S3作为乐鑫推出的高性能Wi-Fi/蓝牙双模芯片,其SPI外设支持高达80MHz时钟频率,结合ESP-IDF提供的sdspi_host驱动,开发者能快速实现SD卡存储方案。该技术广泛应用于物联网设备日志存储、传感器数据采集等场景,本实

weixin_29168393的博客 357

SpringBoot笔试题(含答案)

SpringBoot笔试题

大连赵哥的博客 3790

深入分析大众点评 Ajax 接口:直接请求 JSON 数据高效获取评论

大众点评网站采用前后端分离架构,通过Ajax接口动态加载数据。按F12打开开发者工具,切换到Network(网络)面板。实际环境中,我们需要使用Python重现这一加密逻辑。查看请求响应,寻找包含评论数据的JSON接口。参数是大众点评的反爬机制核心,需要特别处理。:尊重网站的robots.txt文件规定。:仅将数据用于合法合规的研究和分析目的。:不侵犯大众点评的商业秘密和知识产权。打开大众点评网站,进入任意商户页面。:对采集到的用户信息进行脱敏处理。:避免对目标网站造成过大负担。

Z_suger7的博客 1583

《备考系统架构设计师》 - 专栏介绍和目录

本专栏包括所有历年真题及详解、章节知识核心总结、精选高分论文、补充知识、专题总结等。欢迎订阅专栏。

数据知道的博客 4万+

Spring Boot-简单搭建SpringBoot

快速搭建SpringBoot与SpringBoot配置文件以及项目部署

肥羊的博客 316

FOC 转子初始位置检测(图文详解)

什么是转子的初始位置? 其实转子的初始位置是不确定的,但是在电机启动的时候,我们需要得到电角度,这样才可以进行矢量控制;所以,这里将转子与A轴重合作为初始位置,此时电角度也恰好为零,具体如下图所示; ) 至于原理下面会详细分析,这样在转子到初始位置后,也可以得到准确的电角度,就可以实现磁场和转子的同步转动。 如何让转子运行到初始位置? 其实这是一个很简单的问题,在这里我将它放大了,简单地分析了一...

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 2万+

Spring Boot 入门 (一)——建一个最简单的springboot项目

创建一个最简单的springboot项目 废话不多说直接开整!! 打开eclipse新建一个maven项目,目录格式如下: 打开pom.xml文件,引入父依赖,web依赖,并设置JDK版本   4.0.0   com.freetek   nmsc   0.0.1-SNAPSHOT   war             org.springframework.boot

qq_17357299的博客 5631

银行一表通监管报送系统详解

国家金融监管总局对于“一表通”的总体描述为:通过建立一套明细级、标准化的数据体系和汇总计算规则,将银行机构传送至监管可信区的业务明细数据汇总生成财务指标、监管指标和监管报表,大幅提升监管数据时效性,统一数据标准,实现数据间的穿透和整合,同时改变机构多头报送数据模式,减轻机构报送负担。

银行信息系统应用架构详解 2518

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SpringBoot Admin的简单使用

SpringBoot Admin的简单使用

郑某某的博客 2285

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

spring boot 简单例子

spring越来越被很多项目使用,是因为功能全,开发方便,但是spring框架的配置比较麻烦,也就是说每一个项目,使用spring的框架都得进行大量的配置 而spring boot的出现,正在弥补了这个短板,它可以快速的帮助开发人员搭建spring的系统,而且本身集成了tomcat等容器.使用起来很方便,下面介绍下最 简单的使用方法,也就是入门的hello world 程序. MAVEN中的

冰叶纷飞的博客 3022

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

springboot之关于springboot与传统spring项目简单区别

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33947521的博客 1862

Springboot集成redis的简单DEMO

文章目录Springboot集成redis的简单DEMORedis安装下载解压安装命令java集成依赖代码结构代码RedisConfigCustomer.javaRedisValueSet.javaRedisUtils.javaApplicationStarter.java配置文件application.properties Springboot集成redis的简单DEMO Redis安装 下载 下载地址: https://redis.io/downloa 解压 删除不必要的文件 安装命令 #编译

蓝色忧郁 692

springboot+vue项目实战一-创建SpringBoot简单项目

要做一个网站,而且从零开始,首先呢就是技术选型了,经过一番思量决定选择-SpringBoot做后端,前端使用Vue做一个前后端分离的网站。之所以选择springboot+vue就是因为目前工作使用的还是ssm+jsp,虽然也做过springboot和vue的项目,但是还没有从头搭建过项目和一个人做完整个项目,小小博客虽然不会有什么太难的技术,但是也是能学到不少东西的,而且作为一个java后端开发,学下vue也是非常不错滴呀~但是就是要从新做,自己做的意义不一样,更何况,俺就是专门干这个的,嘿嘿嘿。

rita_0567的博客 1301

【Spring Boot笔记】简单粗暴用springboot简单搭建一个新应用

最近在搞一个项目,摒弃了公司老套的框架模式, 采用了springboot搭建新应用。看到如此简洁的代码 , 深受诱惑。趁周末闲余之时, 打开了b站,跟着动力节点的视频学起了springboot 视频资源 https://www.bilibili.com/video/BV1XQ4y1m7ex 简单粗暴的, 搭建个应用run起来 . 本文不介绍细节, 后续会深入了解springboot,剖析源码 一、搭建一个maven模块工程 1、父工程 mvn archetype:generate -Dgro

f5465245的博客 218

SpringBoot系列(一)基于Idea 使用spring boot创建简单的web应用

介绍 相信许多熟悉spring的小伙伴都经受过spring配置的摧残,尤其对于初学者来说,简直是一脸懵逼的状态。而spring boot 的出现,对于使用spring的童鞋们无疑是一种福音。下面就让我们一起开始spring boot 的体验之旅吧! IDEA构建项目 新建Spring Initalizr 项目 点击next(注意包名小写) 然后选择web工程 点击f...

西门吹雪花 1681

springboot 扫描jar包中bean_最简单的一个 Spring Boot 项目抽丝剥茧

点击上方☝SpringForAll社区轻松关注!及时获取有趣有料的技术文章本文来源:http://rrd.me/g8Bce最近在项目中使用 Spring Boot,对它的简单易用印象很深刻。Spring Boot 最大的特点是它大大简化了传统 Spring 项目的配置,使用 Spring Boot 开发 Web 项目,几乎没有任何的 xml 配置。而且它最方便的地方在于它内嵌了 Ser...

weixin_39570838的博客 1259

SpringBoot 简单介绍

一、springboot是啥? 1.什么是springboot? 1.1springboot是spring生态圈的一个轻量级框架,换句话说springboot就是spring,是spring的一个衍生版本 1.2如果是spring框架,项目中搭建完毕,无法实现任何的代码,也就是说spring没有办法帮助开发人员去连接数据库,对数据库做增删改查,也没有办法自动把shiro集成进...

weixin_30852419的博客 371

springboot简单搭建

一、进行一个maven仓库设置 Configure -> Setting 二、对仓库进行修改 三、在pom.xml加入依赖,记住层级关系。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-pare...

weixin_42441558的博客 136
上一篇: SpringData JPA就是这么简单
下一篇: 递归就这么简单
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值