一、Spring Boot概论

Spring Boot概论

传统单体应用架构的问题

通常我们所使用的传统单体应用架构都是模块化的设计逻辑,程序在编写完成后会被打包并部署为一个具体的应用,而应用的格式则依赖于相应的应用语言和框架。
例如,在网上商城系统中,java web工程通常会被打成WAR包部署在服务器上,而普通的java工程会以JAR包的形式包含在WAR包中。

传统单体应用框架的主要优点

1、易于开发
当前开发工具的功能目标是支持单片应用程序的开发,这对于一个传统的单体应用来说非常容易实现。
2、部署简单
只需将应用部署为简单的WAR文件即可部署,并且只需要部署一个单体应用即可。
3、易于伸缩
可以通过在负载均衡器后运行应用程序的多个副本来伸缩应用程序。伴随着用户人数的增加,一台机器不能满足系统的负载,此时我们就会考虑系统的水平拓展。

传统单体应用框架的主要缺点

1、应用复杂度增加,更新、维护困难
2、易造成系统资源浪费
3、影响开发效率
4、应用可靠性低
5、不利于技术更新

如何解决传统应用架构的问题

简单的SOA系统架构模型(Service-Oriented Architecture)

在这里插入图片描述

微服务架构

在这里插入图片描述

微服务架构的优点

1、支持连续交付和部署大型复杂应用程序
2、将大型项目拆分为更小的微服务,方便开发、测试
3、改进的故障隔离
4、技术选型灵活

Spring Boot

Spring Boot是由Spring团队提供的一个全新框架,其设计目的是为了简化Spring应用的初始搭建过程和开发过程。

Spring Boot优点

1、可快速创建独立的Spring应用
2、内嵌Servlet容器,可独立运行
3、对主流开发框架的无配置集成
4、提供开箱即用的Spring插件
5、自动化配置,提高开发、部署效率
6、无需任何XML配置

Spring Boot 开发环境构建

安装JDK 1.8

安装jdk1.8.0,配置三个环境变量:JAVA_HOME、CLASSPATH、PATH
在这里插入图片描述

安装maven

1、将apache-maven-3.3.9目录放在安装目录下
2、新建名为M2_HOME的系统变量,值为maven的安装根目录
3、修改系统变量PATH,添加%M2_HOME%\bin
4、运行以下命令测试是否安装成功 mvn -v
在这里插入图片描述

配置maven

配置本地仓库目录
1、创建Maven本地仓库
2、修改apache-maven-3.3.9/conf/settings.xml文件,添加Maven本地仓库目录
3、将settings.xml拷贝至本地仓库中

<localRepository>D:/文件/mavenRepo</localRepository>

配置镜像

	<mirror>
      <id>aliyun</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun Maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>
  </mirrors>

在Eclipse中配置Maven

1、Window-》Preferences
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、新建maven项目
file-》new-》other
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、配置依赖
双击pom.xml
在这里插入图片描述
在这里插入图片描述
org.springframework.boot
spring-boot-starter-web
在这里插入图片描述
保存pom.xml,加载配置
在这里插入图片描述
编写主程序启动类
在项目的src/main/java下创建一个名称为com.ex的包,在该包中新建一个主程序启动类Manual Chapter01Application.java

package com.ex;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ManualChapeter01Application {
	public static void main(String[] args){
		SpringApplication.run(ManualChapeter01Application.class, args);
	}
}

@SpringBootApplication注解是Spring Boot框架的核心注解,该注解用于表明ManualChapeter01Application 表是Spring Boot项目的主程序启动类。SpringApplication.run()方法启动主程序类。
创建一个用于Web访问的Controller
在com.ex包下创建名称为controller的包,在该包下创建一个名称为HelloController的请求处理控制器,并编写一个请求处理方法。

package com.ex;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
	@GetMapping("/hello")
	public String hello(){
		return "hello Spring Boot";
	}
}

1)@RestController注解是一个组合注解,等同于@Controller和@ResponseBody两个注解结合使用的效果。主要作用是将当前类作为控制层的组件添加到Spring容器中,同时该类方法无法返回JSP页面,而且会返回JSON字符串。
2)@GetMapping注解等同于@RequestMapping(method=RequestMethod.GET)注解,主要作用是设置方法的访问路径并限定其访问方式为GET。
运行项目
运行主程序启动类ManualChapeter01Application ,项目启动成功后,在控制台上会发现Spring Boot项目默认启动的端口号8080,浏览器访问
在这里插入图片描述

在IDEA中使用Spring Initializr方式构建Spring Boot项目

除了可以使用Maven方式构建Spring Boot项目外,还可以通过Spring Initializr方式快速构建Spring Boot项目。从本质上来说,Spring Initializr是一个Web应用,它提供了一个基本的项目结构,能够帮助我们快速构建一个基础的Spring Boot项目。
1、创建Spring Boot项目
打开IDEA,选中【Create New Project】新建项目,在弹出的New Project界面中,左侧选择【Spring Initializr】选项进行Spring Boot项目快速构建
Project SDK用于设置创建项目使用的JDK版本,这里,使用之前初始化设置好的JDK版本即可;在"Choose Initializr Servlice URL."(选择初始化服务地址)下使用默认的初始化服务器地址"https://start.spring.io"进行Spring Boot项目创建(注意使用快速方式创建Spring Boot项目时所在主机须在联网状态下)。接着单击【Next】按钮进入下一步。
在这里插入图片描述
将Group设置为com.example,Artifact设置为chapter01,其余使用默认值。单击【Next】按钮进入Spring Boot场景依赖选择界面。
在这里插入图片描述
Spring Boot场景依赖选择界面中,主要分为4部分内容
1)页面顶部的中间位置可以选择Spring Boot版本,默认显示的是最新稳定版本。如果要自定义项目版本号,则需要进入项目的pom.xml文件,在对应依赖的<version>标签中指定版本。
2)页面左侧汇总了开发场景。每个开发场景下会包含多种技术实现方案,同时提供了集成的模块依赖。例如Web选项下继承了许多关于Web开发的依赖支持;Template Engines选项下集成了有关前端模块引擎的依赖支持。
3)页面中间展示了开发场景中包括的依赖模块。例如:当选中web开发场景时,页面中部会出现Web开发场景下集成支持的多个依赖模块,包括有Web、Reactive Web等。
4)页面右侧展示已选择的依赖模块。当用户选择某个开发场景下的一些依赖模块后就会展示出来。
这里,选择Web开发场景下的Web依赖。单击Next进入填写项目名和路径的界面。
在这里插入图片描述
使用Spring Initializr方式构建的Spring Boot项目会默认生成项目启动类、存放在前端静态资源和页面的文件文件夹。编写项目配置的配置文件已经项目单元测试的测试类。
在项目依赖管理pox.xml中,除了有自动配置项目时选择的Web模块外,还自动生成了测试类依赖spring-boot-text、Maven打包插件spring-boot-maven-plugin以及其他一些通用默认配置信息。
创建一个用于Web访问的Controller
在项目chapter01的com.example包下创建名称为controller的包,在该包下创建一个处理控制类HelloController,并编写一个请求处理方法,

package com.example.chapter01;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello(){
        return "hello Spring Boot";
    }
}

运行项目
运行chapter01项目的主程序启动类Chapter01Application,项目运行成功后,在浏览器上访问"http://localhost:8080/hello"
在这里插入图片描述

单元测试与热部署

单元测试

在实际开发中,每当完成一个功能接口或业务方法的编写后,通常都会借助单元测试验证该功能是否正确。Spring Boot对项目的单元测试提供了很好的支持,在使用时,需要提前在项目的pom.xml文件中添加spring-boot-starter-test测试依赖启动器(前面讲到已经自动添加)。
添加spring-boot-starter-test测试依赖启动器

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

如果是Spring Initializr方式搭建的Spring Boot项目,会自动加入Spring-boot-starter-test测试依赖启动器,无须开发者再手动添加。
编写单元测试类和测试方法
在项目中添加以来启动器后,可以编写Spring Boot项目中相关方法对应的单元测试。如果是使用Spring Initializr方法搭建项目,会在src.test.java测试目录下自动常见于项目主程序启动类对应的测试类。

package com.example.chapter01;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Chapter01ApplicationTests {

    @Test
    void contextLoads() {
    }
}

Chapter01ApplicationTests 是chapter01主程序启动类对应的单元测试类,该类自动生成一个单元测试方法。
@SpringBootTest注解用于加载项目的上下文环境ApplicationContext
在测试类中增加单元测试方法

package com.example.chapter01;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Chapter01ApplicationTests {
    @Autowired
    private HelloController helloController;
    @Test
    public void helloController() {
        String hello=helloController.hello();
        System.out.println(hello);
    }

}

在这里插入图片描述

热部署

在开发过程中,通常会对一段业务代码不断地修改测试,在修改之后往往需要重启服务,某些服务需要加载很久才能启动成功,这种不必要地重复操作极大降低了程序开发效率。Spring Boot框架专门提供了进行热部署地依赖启动器,用于进行项目热部署,并无需开发人员手动重启项目。
添加spring-boot-devrools热部署依赖启动器
在项目的pom.xml中添加热部署依赖启动器。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

IDEA工具热部署设置
选择IDEA工具界面的【File】->【Settings】选项,打开Compiler面板设置页面
在这里插入图片描述

选择【Build、Execution、Deployment】->【Compiler】选项,在右侧勾选【Build project automatically】选项将项目设置为自动编译,单击【Apply】->【OK】保存。
在项目任意页面中使用组合键Ctrl+Shift+Alt+/打开Maintenance选项框,选中并打开Registry界面
在这里插入图片描述
在这里插入图片描述
在列表中找到comoiler.automake.allow.when.app.running,勾选对应的Value值将程序运行方式设置为自动编译,最后单击Close完成设置。
在这里插入图片描述
热部署效果测试
启动Chapter01项目,通过浏览器访问。
在这里插入图片描述
在不关闭项目的情况下,将hello()返回值修改为"热部署"并保存,发现项目能够自动构建并编译,说明项目热部署生效。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值