Spring Boot 初步了解
Spring
- Spring 是为了解决企业级应用开发的复杂性而创建的,简化开发
Spring 是如何简化开发的
- 采用了一下四种关键策略
- 基于 POJO 的轻量级和最小入侵性编程
- 通过 IOC,依赖注入(DI)和面向接口实现松耦合
- 基于切面(AOP)和惯例进行声明式事务
- 通过切面和模板减少样式代码
Spring Boot
- 一个 javaweb 的开发框架,约定大于配置
- Spring Boot 基于 Spring 开发,Spring Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只适用于快速,敏捷地开发新一代基于 Spring 框架的应用程序
- 不是用来代替 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具
- 核心思想:约定大于配置
- 默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,Spring Boot 整合了所有的框架
Spring Boot 的主要优点
- 为所有 Spring 开发者更快的入门
- 自动装配,开箱即用,提供各种默认配置来简化项目配置
- 内嵌式容器简化 Web 项目
- 没有冗余代码生成和 XML 配置的要求
微服务
- 微服务是一种架构风格,他要求我们在开发一个应用的时候,这个应用必须构建成一系列小五福的组合,可以通过 http 的方式进行互通
单体应用架构
- all in one
- 将一个应用中的所有应用服务都封装到在一个应用中,无论是 ERP,CRM 或是其他什么系统,都把数据访问,web 访问,等等各个功能放到一个 war 包内
优点
- 架构简单,项目开发和维护成本低
- 所有项目模块部署在一起,对于小型项目来说,方便维护
缺点
- 所有模块耦合在一起,对于大型项目来说,不易开发和维护
- 项目各模块之间过于耦合,一旦有模块出现问题,整个项目将不可用
- 无法针对某个具体模块来提升性能
- 无法对项目进行水平扩展
微服务架构
- 把每一个功能元素独立出来,需要用到的功能元素被拿去动态组合
优点
- 服务彻底拆分,各服务独立打包、独立部署和独立升级
- 每个微服务负责的业务比较清晰,利于后期扩展和维护
- 节省了调用资源
第一个Spring Boot 程序
- 官网提供了一个快速生成的网站,IDEA 也集成了这个网站
- 在官网直接下载后导入 idea 开发(https://start.spring.io/)
- 直接使用 idea 创建一个 Spring Boot 项目(常用)
- HelloWorldApplication 本身就是一个组件
- pom.xml 文件
- parent:继承 spring-boot-starter-parent 的依赖管理,控制版本与打包等内容
- SpringBoot 的所有依赖都是以 spring-boot-starter 开头的
- spring-boot-starter-web 用于实现 HTTP 接口(包含 Spring MVC),使用 Tomcat 作为默认嵌入式容器
- spring-boot-starter-test 用于编写单元测试依赖包
- spring-boot-starter-plugin 构建配置部分,配合 spring-boot-starter-parent 就可以把 Spring Boot 应用打包成 jar 来直接运行
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yqly</groupId>
<artifactId>helloworld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>helloworld</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--web依赖:tomcat,dispatcherServlet,xml...-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--单元测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!--打jar包插件-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- 可以在 application.properties 核心配置文件中更改端口号
#更改项目端口号
server.port=8081
- 可以通过在 application.properties 同级目录下创建并编写 banner.txt 来修改 SpringBoot 启动时的图标
测试网站是否启动成功
网站启动成功
编写 HelloWorld
- 在程序主入口同级目录下建包
- 编写 Controller 代码
package com.yqly.helloworld.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello,World";
}
}
- 执行
- 将程序打包
- 在 Maven 中的 Lifecycle 下双击 package
- 找到 jar 所在位置,在 cmd 中通过 jar 包执行程序