Spring Boot入门
一、Spring Boot
1、什么是Spring Boot?
Spring Boot 是一个框架,其用来简化 Spring 应用的初始化搭建以及开发过程。其使用特定的方式来配置,使开发人员减少配置操作。类似于 maven 整合 jar 包,Spring Boot 整合了框架。
2、未使用 Spring Boot 时配置一个 Spring Web 项目的操作
(1)配置 web.xml 文件,加载 Spring,Spring MVC(未使用 maven 时,还要手动导入 jar 包)。
(2)配置数据库连接。
(3)开启注解。
(4)........
(5)部署到 Tomcat 容器中进行调试。
使用了SpringBoot后,你将体会到什么叫日了狗了,真他喵的简单。
3、单体应用与微服务
(1)单体应用:
指的是一个单体应用程序,将其所有的功能放在一个进程中处理,在服务器上复制这个单体进行扩展。简单的讲就是将所有的功能模块都使用一个项目来处理,然后打成war包,发布到服务器上(在不同的服务器上部署同样的程序,从而提高并发能力)。
注意:可能修改某个部分时,使得整个程序需要重新部署才行,是一个牵一发而动全身的问题。
(2)微服务:(属于一种架构风格)
微服务架构是将每一个功能模块分别放进到一个独立的服务中,并且通过跨服务器分发这些服务进行扩展,只在有需要时才复制。一个应用应该是一组小型服务,可以通过HTTP的方式来互通。
注意:修改某部分时,只需要重新部署修改的功能模块那个微服务即可。每一个功能模块都是可独立替换和独立维护的软件单元,完全体现了高可复用性,高可维护性,高可扩展性。
4、Spring与微服务
(1)Spring Boot可以快速构建一个应用。
简化Spring应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用的微服务功能,可以和spring cloud联合部署。核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。
(2)Spring Cloud在分布式中建立连接。
是一套完整的微服务解决方案,是一系列不同功能的微服务框架的集合。Spring Cloud基于Spring Boot,简化了分布式系统的开发,集成了服务发现、配置管理、消息总线、负载均衡、断路器、数据监控等各种服务治理能力。比如sleuth提供了全链路追踪能力,Netflix套件提供了hystrix熔断器、zuul网关等众多的治理组件。config组件提供了动态配置能力,bus组件支持使用RabbitMQ、kafka、Activemq等消息队列,实现分布式服务之间的事件通信。
(3)Spring Cloud Date Flow处理数据。
二、使用IDEA构建一个SpringBoot
1、方法1:
step1:进入网址:http://start.spring.io/
step2:选择相关信息,如下图:
step3:点击Generate the project, 可以下载项目压缩包.
step4:解压项目后,使用IDEA导入。
File -> New -> Model from Existing Source.. -> 选择解压后的文件夹 -> OK, 选择 Maven 无脑 Next,OK done!(当然,根据需要,可以适当做些改变)
可能会出现错误的情况。原因是没有相关的依赖信息(jar包),等待后台联网下载即可。
2、方法2
step1: 选择 File -> New —> Project… 弹出新建项目的框
step2: 选择 Spring Initializr,Next 也会出现上述类似的配置界面,Idea 帮我们做了集成
step3: 填写相关内容后,点击 Next 选择依赖的包再点击 Next,最后确定信息无误点击 Finish。
3、构建第一个Spring Boot程序(HelloWorld)
(1)构建启动Spring的主类
【HelloWorldApplication.java】 package com.test.application; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @SpringBootApplication 用于标注一个主程序类,说明其为一个SpringBoot应用 */ @SpringBootApplication public class HelloWorldApplication { public static void main(String[] args){ // 用于启动一个Spring应用 SpringApplication.run(HelloWorldApplication.class, args); } }
(2)构建一个Controller类
package com.example.helloworld.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloWorldController { @ResponseBody @RequestMapping("/hello") public String show(){ return "Hello World"; } }
(3)开启服务
(4)启动异常问题:
question1:
出现 java.net.BindException: Address already in use. 异常。可能是端口被占用。
先查询是哪个进程占用了,若能直接杀死最好,不行的话,可以修改默认端口号(后续再介绍)。 windows查询端口号以及进程: WIN + R 敲cmd打开命令行。 输入:netstat -aon|findstr 端口号 输出的是端口号以及其PID。 输入:tasklist | findstr PID 输出的是占用端口号的进程。 输入:taskkill /f /t /im 进程名 (用于结束进程)
question2:
springboot启动后访问不到controller:
当启动springboot时@SpringBootApplication注解会去自动扫描当前目录和其子目录,如果controller层不在子目录则扫描不到。所以将其配置到子目录中。
(5)测试路径:(至此,测试完成)
https://localhost:8080/hello
(6)创建可执行的jar文件。需要在pom.xml中添加插件信息(按上述两种方法新建的项目都自动配置了)。
【插件配置信息】 <!-- 将应用打包成一个可执行的jar包 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 【pom.xml】 <?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 http://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.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>helloworld</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>helloworld</name> <description>Demo project for Spring Boot</description> <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-tomcat</artifactId> <scope>provided</scope> </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>
将项目打包。
找到打包后的文件,拷贝到某个路径下,此处我拷贝到(E:\JAVA)。
进入路径,并执行 java -jar 包名,即可启动Spring,通过浏览器可以访问。
(7)目录结构
static:用于保存静态资源,比如css,html,image等。
templates:保存模板页面,由于SpringBoot使用嵌入式的tomcat,不推荐使用JSP(使用jsp会失去springboot的一些特性),如果想写JSP,可以使用模板引擎(比如:freemarker, thymeleaf)。
application.properties:用来修改默认的配置信息。
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h57135.shtml