zoukankan      html  css  js  c++  java
  • SpringBoot基础学习(一) SpringBoot概念、简单案例实现、单元测试及热部署讲解

    SpringBoot概念

    Spring优缺点分析

    Spring优点

    Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品,无需开发重量级的Enterprise JavaBean(EJB)。Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。

    Spring缺点

    虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配 置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。

    所有这些配置都代表了开发时的损耗,因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。

    除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标, 而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。

    SpringBoot解决Spring上述缺点

    SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。

    起步依赖

    起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。

    简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能

    自动配置

    SpringBoot的自动配置,指的是SpringBoot会自动将一些配置类的bean注册进IOC容器,我们可以需要的地方使用@autowired或者@resource等注解来使用它

    “自动”的表现形式就是我们只需要引我们想用功能的包,相关的配置我们完全不用管,SpringBoot会自动注入这些配置bean,我们直接使用这些bean即可

    SpringBoot的优点

    • 简单、快速、方便地搭建项目;
    • 对主流开发框架的无配置集成;
    • 极大提高了开发、部署效率。

    SpringBoot简单案例实现

    案例需求:请求Controller中的接口,返回“你好 SpringBoot”到页面。

    (1)使用Spring Initializr方式构建SpringBoot项目

    Spring Initializr是一个Web应用,它提供了基本的项目结构,能够帮助我们快速构建一个基础的SpringBoot项目。创建步骤如下所示:

    打开IDEA->File->New->Project:

    Project SDK用于设置创建项目使用的SDK版本,这里我选择JDK1.8版本;在“choose starter service url(选择初始化服务器地址)”下使用默认的初始化服务器地址“https://start.spring.io”进行SpringBoot项目创建(注意使用快速方式创建SpringBoot项目时,主机必须联网)。

    点击下一步:

    点击Finish,即可完成SpringBoot项目的创建工作:

    创建好的SpringBoot项目结构如下图所示:

    使用Spring Initializr方式构建的SpringBoot项目会默认生成项目启动类、存放前端静态资源文件夹和模板页面的文件夹、编写项目配置的全局配置文件夹以及进行单元测试的测试类。

    (2)创建一个用于Web访问的Controller

    在com.hardy.springboot_demo下创建一个名为controller的包,在controller包下创建一个HelloController类,并编写一个返回“你好 SpringBoot”的接口,代码如下:

    @RestController // 该注解为组合注解,相当于Spring中 @Controller+@ResponseBody注解
    public class HelloController {
    
        @RequestMapping(name="/demo", produces="application/json; charset=utf-8")
        public String demo(){
            return "你好 SpringBoot";
        }
    
    }

    其中 produces = "application/json; charset=utf-8" 是为了解决中文乱码的问题。

    (3)运行项目

    点击运行按钮:

    访问 http://localhost:8080/ 查看结果:

    单元测试与热部署

    (1)单元测试

    开发中,每当完成一个功能接口或业务方法的编写后,通常会借助单元测试验证功能是否正常。SpringBoot对项目的单元测试提供了很好的支持,在使用时,需要提前在项目的pom.xml文件引入spring-boot-starter-test测试依赖启动器,以便通过相关注解实现单元测试。

    操作步骤如下:

    1、引入spring-boot-starter-test测试依赖启动器

    在项目的pom.xml文件引入spring-boot-starter-test测试依赖启动器,示例代码如下:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    注意:使用Spring Initializr方式搭建的SpringBoot项目会自动加入spring-boot-starter-test测试依赖器,无需再手动添加。

    2、编写单元测试类和测试方法

    使用Spring Initializr方式搭建的SpringBoot项目,会自动src.test.java测试目录下创建与项目主程序启动类对应的测试类并自带一个contextLoads测试方法,下面来完善一下测试类的代码:

    @SpringBootTest // 标记为SpringBoot单元测试类,并加载项目的ApplicationContext上下文环境
    class SpringbootDemoApplicationTests {
    
        @Autowired
        private HelloController helloController;
    
        /**
         * 自动创建的单元测试方法示例
         */
        @Test
        void contextLoads() {
            String demo = helloController.demo();
            System.out.println(demo);
        }
    
    }

    运行测试方法,在控制台查看单元测试结果:

    (2)热部署

    在开发过程中,通常需要对一段业务代码进行重复修改测试,在修改之后往往需要重启服务,有些服务需要加载很久才能启动成功,这种不必要的重复操作不利于提升开发效率。为此,SpringBoot框架专门提供了进行热部署的依赖启动器,用于进行项目热部署,而无需手动重启项目。

    操作步骤:

    1、引入spring-boot-devtools热部署依赖启动器

    <!-- 引入热部署依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>

    引入spring-boot-devtools热部署依赖启动器后,还需要针对IDEA开发工具进行热部署相关的功能设置。

    2、IDEA工具热部署设置

    选择IDEA工具界面 File->Settings 选项,打开 Compiler 面板设置页面:

    选择 Build 下的 Compiler 选项,在右侧勾选 Build project automatically 选项将项目设置为自动编译,单击 OK 按钮保存设置。

    在项目的任意页面中使用组合快捷键 Ctrl+Shift+Alt+/ 打开 Maintenance 选项框,选中并打开 Registry 页面,具体如下图所示:

    在列表中找到 compiler.automake.allow.when.app.running,将该选项的 Value 勾选,用于指定 IDEA 工具在程序运行过程中自动编译,最后单击 Close 按钮完成设置。

    3、使热部署生效

    假如用 mvn spring-boot:run 方式启动应用,修改完java文件就会立即生效。

    假如用 debug 方式启动应用,则需要手动重新编译整个项目,或者编译被修改的文件。比如点击 IDEA 菜单 Build > Build XXX / Recompile XXX

    4、热部署效果测试

    以 debug 模式启动项目,访问 http://localhost:8080/ 查看结果:

    页面一开始输出的内容为“你好SpringBoot”:

    为了测试配置的热部署是否有效,我们在不关闭项目的情况下将页面返回内容修改为“Hello SpringBoot”并保存,查看控制台信息会发现项目能够自动构建和编译,说明项目热部署生效,刷新页面:

    可以看到,浏览器输出了“Hello SpringBoot”,说明项目热部署成功了。

    总结

    在本篇文章中,我们介绍了SpringBoot的基本概念,实现了一个简单的SpringBoot项目demo,并且介绍了其单元测试与热部署配置。

    关于SpringBoot的知识还有很多,比如它的配置文件、原理及源码解析、数据访问、视图技术及缓存管理,在后面的文章中,我们会逐一进行讲解。

    作者:blayn
    出处:https://www.cnblogs.com/blayn/
    版权:本文版权归作者和博客园共有
    转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
  • 相关阅读:
    抓取用户openid
    getaccesstoken方法
    https_request请求接口返回数据
    composer安装
    Linux下mysql数据库root无法登录的情况
    nginx安装
    shell脚本采用crontab定时备份数据库日志
    Python之元类详细解析
    Python面向对象之封装、property特性、绑定方法与非绑定方法
    Python之面向对象的组合、多态、菱形问题、子类中重用父类的两种方式
  • 原文地址:https://www.cnblogs.com/blayn/p/14790691.html
Copyright © 2011-2022 走看看