300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Spring Boot框架从入门到精通

Spring Boot框架从入门到精通

时间:2019-08-25 05:19:46

相关推荐

Spring Boot框架从入门到精通

文章目录

SpringBoot介绍定义特点SpringBoot全新的pom.xmlpom.xmleclipse第一个SpringBoot Project创建maven projectUpdate Maven修改pom.xml创建RunApp.java创建HelloController.java启动Tomcat WebServer测试IDEA第一个SpringBoot Project创建SpringBoot project配置maven创建RunApp.java创建HelloController.java测试扩展执行过程常见问题:8080端口冲突Apache TomcatWeb中间件历史servlet-api.jarGit忽略特殊目录和文件.gitignore扩展:请求响应过程HTTP协议执行过程谷歌浏览器查看请求响应信息头信息响应头请求头

SpringBoot介绍

定义

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。Spring Boot 现在已经成为Java 开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。成为SpringBoot全家桶。

特点

创建独立的Spring应用程序嵌入的Tomcat,无需部署WAR文件简化Maven配置自动配置Spring提供生产就绪型功能,如指标,健康检查和外部配置

SpringBoot全新的pom.xml

pom.xml

它产生整个项目目录,其实我们只需pom.xml文件,覆盖本地maven工程的pom.xml文件。

注:可以使用idea直接创建springboot项目,其本质也是去调用上面的网站,只不过在本地访问外网https://start.spring.io。

修改pom.xml后,把项目进行maven-update 操作,下载依赖的jar包。

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.tedu</groupId><artifactId>jk</artifactId><version>0.0.1-SNAPSHOT</version><name>jk</name><description>Demo project for Spring Boot</description><!-- 提供相关的 Maven 默认依赖 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.2</version><relativePath/> <!-- lookup parent from repository --></parent><properties><!-- 使用jdk8 --><java.version>1.8</java.version></properties><!-- 添加依赖 --><dependencies><!-- 使用springmvc构建程序并使用默认的嵌入式容器Tomcat --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 使用Junit测试springboot程序 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><!-- 添加插件 --><plugins><!-- springboot添加maven插件,会打包成一个可以直接运行的 JAR 文件,直接部署到服务器 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

eclipse第一个SpringBoot Project

创建maven project

Update Maven

默认jdk1.5,早已经过气,改成jdk1.8

修改pom.xml

添加SpringBoot的依赖包

<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.tedu</groupId><artifactId>jkboot</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.2</version><relativePath/> <!-- lookup parent from repository --></parent><properties><java.version>1.8</java.version></properties><dependencies><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><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

创建RunApp.java

SpringBoot使用了全新的运行方式,两句话,直接执行main方法,默认启动tomcat中间件,端口为8080。

注意:类必须放在其他类的父级目录,它底层使用了包扫描机制,扫描的要求只扫描本类所在的目录极其子目录。

package cn.tedu.jk;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication //标识为springboot项目public class RunApp {public static void main(String[] args) {//全新的启动方式,执行run方法会自动启动集成的tomcat中间件SpringApplication.run(RunApp.class, args);}}

创建HelloController.java

目前市场主流已经采用注解方式进行开发

package cn.tedu.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController//接受浏览器的请求 并返回json数据public class HelloController {//@RequestMapping("hi")//只匹配一个路径@RequestMapping({"hi","hello/hi"})//匹配两种路径/hi或者/hello/hipublic String hi() {return "hi springboot!";}}

启动Tomcat WebServer

ApacheTomcat是一个非常著名的web中间件,于之前学习的技术的不同在于它提供了web程序的容器环境,专门用于网站服务。

SpringBoot默认集成了tomcat中间件,会自动把项目打包jar发布到tomcat,这样我们就形成了自己的网站。但这个网站只能局域网访问,如果外网(广域网),自己购买一个网站,部署上去即可。

注意:不用服务时,关闭tomcat服务

测试

http://localhost:8080/hello/hi # 某个web服务的根请求http://localhost:8080/hi# /hi的某个具体请求

url解析:

localhost代表本机,等价于ip:127.0.0.18080代表本机的服务,tomcat默认端口8080/hi等请求地址在一个web服务中请求具有唯一性(多个就没法区分了)

IDEA第一个SpringBoot Project

创建SpringBoot project

配置maven

创建RunApp.java

package cn.tedu.cotroller;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.stereotype.Controller;@SpringBootApplication@Controllerpublic class RunApp {public static void main(String[] args) {SpringApplication.run(RunApp.class, args);}}

创建HelloController.java

package cn.tedu.cotroller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController//接受浏览器的请求 并返回json数据public class HelloController {//@RequestMapping({"hi","hello/hi"})//匹配两种路径/hi或者/hello/hi@RequestMapping("hi")//只匹配一个路径public String hi() {return "hi springboot!";}}

测试

扩展

执行过程

url** 的解析执行过程:**

浏览器输入的url,就会被解析后传入web中间件(/hi),web中间件再会进一步的解析,找到对应的Controller的某个注解里对应的url @RequestMapping({"/","/hi"}) ,从而就找到HelloController的hi()方法。最终利用反射执行这个类的方法(将来这个方法中就用来编写实现业务逻辑代码)。因为使用了@RestController,返回的String字符串对象底层会使用jackson工具类转换java对象为json字符串,返回给浏览器,浏览器将字符串回显(展示)在页面上。

常见问题:8080端口冲突

Tomcat服务不会自动关闭,需要手动关闭,如不关闭,下次启动就会报下面错误:

port 8080 was already in use. 端口8080已经被占用。关闭服务,重新启动即可。

仍未解决的话,以下三种方式任选一个来测试.

1,需要执行DOS命令处理:

C:\Users\lpx>netstat –ano --查看所有端口号,找到8080端口对应的PID号C:\Users\lpx>taskkill -pid 688 –f --杀死688进程号

2,可能是因为电脑里安装过Oracle数据库:

要找到Oracle的服务OracleXETNSListener,停掉.

3,直接使用yml方式配置修改端口号:

在src/main/resources下添加application.yml文件,内容如下:

server:port: 8090

清除项目缓存,再次重启服务,测试即可: http://localhost:8090/hello/hi

Apache Tomcat

Web中间件历史

最早的网站技术是Apache,但它只支持html。当微软推出asp技术后,第一代动态网站技术诞生,微软同时推出了ISS以支持asp技术。随着sun公司的j2ee架构横空出世,提出第二代动态网站技术规范servlet、jsp后,servlet容器就如雨后春笋。Tomcat、Jetty、GlassFish、JBoss、WebSpare、WebLogic,后三者非常厉害,性能超群,但由于昂贵的费用及微服务新架构的兴起,而开始没落,Jetty一直号称性能远胜Tomcat,但Tomcat的霸主地位已经难以撼动(就像编程语言中的java)。目前市场主流都采用Tomcat,特别国内一线互联网企业,而国企采用WebSpare和WebLogic居多。

servlet-api.jar

我们按sun公司的java规范写的servlet(HttpServlet)就专门支持网站的请求request(HttpServletRequest)和响应response(HttpServletResponse)的处理。

各大web中间件厂商按照servlet规范做自己的实现如tomcat的servlet-api.jar。

注:我们的关注点在于实现项目,这里会使用tomcat,初步了解底层结构,不必过渡深入研究。

Git忽略特殊目录和文件

.gitignore

在git工作空间的根目录下创建文本文件 .gitignore git忽略,配置如下:

.gitignore*.class#maven ignoretarget/*#eclipse ignore.settings/.project.classpath

注意:target临时目录配置了不生效

git rm -r --cached . #把本地缓存删除(改变成未track状态),然后再提交

通过变通方式暂时解决:配置 *.class,禁止上传class文件

扩展:请求响应过程

HTTP协议

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件、图片文件、查询结果等)。

执行过程

怎么浏览器输入url就可以找到我们写的controller进行执行并且返回呢?

其实这底层是有一套标准的,这个标准称为HTTP协议。我们浏览器成输入的http://这就代表执行http协议。

谷歌浏览器查看请求响应信息

头信息

响应头

请求头

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。