一、SpringBoot入门

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

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

1.1SpringBoot启动

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

在idea中直接使用启动(最常用)

使用mvn 命令来启动

使用mvn编译,而后在class目录生成jar包,使用Java命令来启动

1.2项目属性配置

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

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

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

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

image

image

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

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

image

image

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

@configurationProperties

@Component

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

image

可以将开发环境的配置文件和生产环境的配置文件分开,使用总配置文件指定使用的是哪个配置文件。

在使用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自带的。

image

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

image

三、知新

3.1 SpringData JPA

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

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

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

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

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

image

3.2IDEA类似与POSTMAN

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

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

我也顺利找到了..

image

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

3.3单元测试

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

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

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

image

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

image

3.4热部署和热加载

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

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

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

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

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

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

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

3.4.1Java类加载过程

image

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

image

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

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

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

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

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

image

image

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

3.4.2Tomcat热部署

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

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

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

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

3.4.3SpringBoot热部署

springBoot热部署3种方式:

1、在plugin标签中加入插件

org.springframework

springloaded

1.2.6.RELEASE

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

2、启动的加入参数 引用springloaded jar包

-javaagent:'jar包路径' -noverify

3、pom文件加入依赖

org.springframework.boot

spring-boot-devtools

true

2018年1月2日15:02:13

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

四、扩展阅读

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

4.1 SpringBoot教程参考资料:

五、最后

image

image

image

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

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

springboot 成员变量_SpringBoot就是这么简单相关推荐

  1. springboot 成员变量_springboot系列之04-提高开发效率必备工具lombok

    未经允许,不得转载 原作者:字母哥博客 本文完整系列出自:springboot深入浅出系列 一.前置说明 本节大纲 使用lombok插件的好处 如何安装lombok插件 使用lombok提高开发效率 ...

  2. MFC对话框控件成员变量编程熟悉 - 开发一个简单天线长度计算器

    新建一个对话框工程:VC6:VC2010类似:版本不同略有些差别: 新建完如下:对话框默认有三个控件,自己添加的: 右击 确定 按钮,建立类向导:进入类向导: Class name下拉选中对话框类:类 ...

  3. JAVA显示子类num值_JavaSE8基础 子类中的成员变量与父类重名 简单示例

    os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0) 代码: //基类 class Person ...

  4. springboot requestmapping 正则_SpringBoot实现优雅的后端接口

       阅读本文约需要8分钟  大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下QPS.TPS.并发用户数.吞吐量关系的相关知 ...

  5. springboot requestmapping 正则_SpringBoot三招组合拳,手把手教你打出优雅的后端接口...

    一.前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个部分每个公司要求都不同,没有 ...

  6. Springboot整合Poi导出excel(简单版)

    一. 问题引入 博客专栏: Springboot整合Poi导出excel(简单版) Springboot整合Poi导出excel(注解版) 总所周知Springboot是一个功能强大的微服务框架,集成 ...

  7. SpringMVC处理Date类型的成员变量方法

    2019独角兽企业重金招聘Python工程师标准>>> 在使用 SpringMVC 的时候,我们可能需要将一个对象从 View 传递给 Controller .而当这个 Object ...

  8. 从@property说起(四)深入成员变量

    之前的三篇文章都讲的是interface和setter/getter,这一篇就讲一下ivar. 什么是成员变量 @interface MyViewController :UIViewControlle ...

  9. Delegate成员变量和Event的区别

    上周五有同事问了我一个问题:Delegate和Event有什么区别?具体来说在设计一个类的时候,声明一个事件(Event)和声明一个Delegate类型的成员变量有啥区别. 我的第一反应是没啥区别,虽 ...

最新文章

  1. SQL 调优专题总结
  2. 电脑反应慢卡怎么解决_电脑开不了机怎么解决?
  3. 河南省第十届省赛 Plumbing the depth of lake (模拟)
  4. 数据结构树及相关算法题
  5. 各个线程顺序循环执行
  6. 算法证明_CFR+算法证明过程
  7. nit计算机应用基础是考试大纲,NIT考试大纲--计算机应用基础.doc
  8. apache安装配置
  9. 前端学习(2625):vs安装
  10. Sublime Text 2插件安装及快捷键介绍
  11. javascript中基本类型和引用类型复制变量的值
  12. 【公众号】微信第三方登录(静默授权和非静默授权)(具体代码:U盘 新浪云SAE)...
  13. python与excel-Python 与 Excel 终于在一起了
  14. Android 操作权限大全 (android.permission)
  15. ADS仿真遇到error如何查找原因
  16. 鱼雷武器控制系统半实物仿真系统ETest设计与实现
  17. HTML深海骑兵制作,深海迷航代码独眼巨人号护盾发生器 | 手游网游页游攻略大全...
  18. Updates were rejected because the tip of your current branch is behind hint: its remote counterpart
  19. MOD函数的使用方法
  20. 交互设计 | 如何做到惊喜?

热门文章

  1. 一个商品SKU是怎么生成的 1
  2. 超级详细的CentOS8.2搭建个人网站(WordPress)
  3. 【RL从入门到放弃】【二 表格型RL】
  4. CCF系列题解--2015年3月第三题 节日
  5. 学习编程到底用不用记笔记?
  6. 计算机自带pdf吗,电脑自带pdf转换工具哪个好?办公必备!
  7. 第十章 第二节二重积分的计算(同济版)
  8. 一连串数字怎么转换成二维码?数字生成二维码如何制作?
  9. 怎样一次性删掉word或wps文档里的空格行
  10. 目标检测(四)——xml快速上手(可完整实现)