文章目录
SpringBoot初识
JAVA WEB发展史
web的产生
静态资源的发布媒介 html http url
动态资源的展示 http 参数的不同 返回不同的信息
CGI的诞生
协议/标准 把参数写进环境变量里 启动CGI的程序获取参数后返回动态的结果(工作模式) 一笔请求 => 启动一个CGI程序 耗费资源
巨头公司“腾讯”部分业务 c++服务端 php前端页面
java解决方案
applet 浏览器的插件 把服务端传过来的java代码在插件中解释执行 (客户端执行代码)
servlet = server + applet 服务端解决方案
html标签 + 动态代码 + 放到大 servlet类里 去输出
out.println("<html><title>");
out.println("hello"+name);
out.println("</html></title>");
jsp = java server pages
解决样板代码的问题
<html><title>hello <%name%> </title></html>
mvc分层思想
model javabean 数据层 view jsp 展示层 controller 业务控制类
控制层 接收请求 查找返回页面 生成页面的数据 结合一起 返回动态页面
ajax 渲染部分页面 js整个技术的一个基石
Spring
without EJB => spring框架 ioc aop
ioc ----控制反转 di 依赖注入
本质:构建对象的技术单例模式 Spring 用工厂来创建对象的方式
容器----对象之间的依赖关系 A 属性B程序获取对象时 容器会自动注入对象给程序(从容器的角度) => 依赖注入
本应该程序自己来控制的对象,交给容器帮我们控制 (从程序的角度) => 控制反转
aop 面向切面编程
系统中有多个模块 模块A 日志打印 异常获取 事务管理 等等 模块B C
各个模块的交叉关注点 非核心业务逻辑 通用的处理方案来解决
配置繁杂
SpringBoot
引导你更便捷的使用spring
未来
总结 技术诞生的规律 : 新技术的诞生用来解决现存技术的痛点
异步化 spring5 响应式编程
约定由于配置
小到配置文件,中间件的默认配置,大到内置容器、生态中的各种Starters无不遵循此设计规则
Maven必备
想要更加深入的学习Maven,可以参考【从入门到学废—Maven】全站最强Maven学习笔记
why Maven
1.自动关联和下载依赖的jar包,便捷升级框架的版本。
不仅是构建工具,它还是依赖管理工具和项目管理工具,提供了中央仓库,能够帮我们自动下载构件。
为了解决依赖的增多,版本不一致,版本冲突,依赖臃肿等问题,它通过一个坐标系统来精确的定位每一个构件。
2.提供统一的规范,约定优于配置,利于合作。
3.扩展性好,支持各类插件,涉及到方方面面,比如编译、打包、依赖检查、web容器启动,用例执行等等。
Maven 基础
Maven是一个项目管理工具
可以帮助我们管理jar包
帮助我们编译源代码
帮助进行单元测试
帮助进行项目自动部署
jar包管理通过配置文件,在仓库中储存
仓库分三类:本地仓库、远程仓库、中央仓库。
Maven中央仓库是由Maven社区提供的仓库
其中包含了大量常用的库
如果Maven在中央仓库也找不到依赖的文件,它会停止构建
为避免这种情况,开发人员会自己定制仓库,叫远程仓库。
运行Maven的时候,Maven所需要的任何构件都是直接从本地仓库获取的。
如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库构建。
我们项目要经历编译、测试、运行、打包、安装、部署等一系列,这些过程我们称为构建。Maven可以一个命令就完成整个工作。
编译 测试 打包 安装 发布
compile test pachage install deploy(需要配置)
Maven----pom.xml
Maven项目的核心是pom.xml文件
POM(project object model,项目对象模型),定义了项目的基本信息。
相关概念太多,待更
lombok插件
简介
Lombok是一个可以通过注解形式来帮助我们简化消除样板式代码的工具。
通过使用注解,可以在编译源码的时候生成对应的方法。
安装插件
打开IDEA->Preferences(Mac版)/Settings(Windows版)->Plugins
搜索lombok->点击install
如图所示
pom导入依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
</dependency>
lombok插件常用注解
@Getter/@Setter:可以作用在类上和属性上,
@EqualsAndHashCode:
@ToString:
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
@Data
@Budilder
@Slf4j
lombok插件原理
实现的原理:主要是通过抽象语法树(AST),在编译处理后,匹配到有其注解的类,那么注解编译器就会自动去匹配项目中的注解对应到在lombok语法树中的注解文件,并经过自动编译匹配来生成对应类中的getter或者detter方法,达到简化代码的目的。
具体步骤:
1.其开发是遵循JSR 269 Pluggable Annotation Processing API
2.而javac从java6开始支持“JSR 269 API”规范
3.即只要程序实现了该API,就能在javac运行的时候得到调用
4.lombok实现了“JSR 269 API”,在编译源码的具体流程如下图:
搭建hello world
基础环境
- JDK-1.8
- Maven-3.6.3
- IDEA-2020
- SpringBoot-2.1.8.release
搭建项目步骤
- Idea中创建项目
- 引入依赖
- 创建入口和控制类
- 执行验证
设计理念
- 快、很快、非常快
- 进可开箱即用,退可按需改动
- 不生成代码,无xml配置
HelloWorld示例
- 创建一个maven项目
- 加入依赖
<!--超级父pom 是springboot父依赖 声明版本号-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
</parent>
<dependencies>
<!--web项目需要使用的-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 打开程序入口
package com.uncle;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @program: test-spring-boot
* @description:
* @author: 步尔斯特
* @create: 2021-05-07 15:02
**/
@SpringBootApplication
public class TestApplication {
//使用SpringApplication类的静态方法 启动springboot程序
//方法的参数 程序的入口类 main函数的参数
public static void main(String[] args) {
SpringApplication.run(TestApplication.class,args);
}
}
- 业务逻辑
package com.uncle.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @program: test-spring-boot
* @description:
* @author: 步尔斯特
* @create: 2021-05-07 15:05
**/
@RestController
public class HelloWorld {
@RequestMapping("/hello")
public String hello() {
return "hello world!!!";
}
}
- 运行
热部署配置
- pom文件引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
-
idea的setting配置
勾选build project automatically
-
设置idea的registry
勾选compiler automake allow when app running
打包可执行jar
pom文件引入
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
三种启动方式
- Application----Run
- mvn spring-boot:run
- mvn packag ---- java -jar