且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SpringBoot就是这么简单(下)

更新时间:2022-10-14 12:27:13

3.2IDEA类似与POSTMAN

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

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

我也顺利找到了..

SpringBoot就是这么简单(下)

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


3.3单元测试


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

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

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

SpringBoot就是这么简单(下)

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

SpringBoot就是这么简单(下)


3.4热部署和热加载


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

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

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

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

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

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

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

3.4.1Java类加载过程

SpringBoot就是这么简单(下)

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

SpringBoot就是这么简单(下)

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

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

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

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

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

SpringBoot就是这么简单(下)SpringBoot就是这么简单(下)

在里边还有使用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.csdn.net/u013938484/article/details/77541050

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


四、扩展阅读


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


4.1 SpringBoot教程参考资料:


  • springBoot Github Demo:
  • 与流行框架整合的Demo(慕课网,对应有课程的)


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


  • 测试Controller使用MockMVC测试
  • springBoot拦截器
  • SpringBoot拦截器无法注入Bean
  • 出现: Could not find acceptable representation原因及解决方法
  • springBoot下使用统一异常处理方法:
  • springBoot集成Freemarker

SpringBoot就是这么简单(下)

五、最后

SpringBoot就是这么简单(下)SpringBoot就是这么简单(下)

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