2.SpringBoot
2.1 spring
-
Spring框架是由于软件开发的复杂性而创建的,轻量级的控制反转(IOC)和面向切面编程的容器。
-
简化开发的几种策略:
-
- 基于bean的轻量级和最小侵入性编程;
- 通过IOC,依赖注入(DI)和面向接口实现松耦合
- 基于切面(AOP)和惯例进行声明式编程
- 通过切面和模版减少样式代码
-
随着Spring不断的发展,涉及的领域越来越多,项目整合开发需要配合各种各样的文件,逐渐使用复杂化,违背了最初的理念,甚至人称配置地狱。Spring Boot正是在这样的一个背景下被抽象出来的开发框架,目的为了让大家更容易的使用Spring、更容易的集成各种常用的中间件。
2.2 springBoot
- Spring Boot(官网:https://spring.io/):基于Spring开发,Spirng Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。
- Spring Boot具有Spring一切优秀特性,Spring能做的事,Spring Boot都可以做,而且使用更加简单,功能更加丰富,性能更加稳定而健壮
- SpringBoot以约定大于配置的核心思想,默认帮我们进行了很多设置,多数Spring Boot应用只需要很少的Spring配置。同时它集成了大量常用的第三方库配置(例如Redis、MongoDB、Jpa、RabbitMQ、Quartz等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用,简单来说就是Spring Boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven:整合了所有的jar包,spring boot整合了所有的框架。
例如 spring-boot-starter-redis、spring-boot-starter-data-mongodb 和 spring-boot-starter-data-elasticsearch 等。这些依赖模块为 Spring Boot 应用提供了大量的自动配置
- Spring Boot的主要优点:
为所有Spring开发者更快的搭建和开发
独立运行的 Spring 项目,Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令“ java –jar xx.jar” 即可运行。
开箱即用,提供各种默认配置来简化项目配置
内嵌式servlet容器简化Web项目,Spring Boot 使用嵌入式的Servlet容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。
没有冗余代码生成和XML配置的要求,不需要任何xml配置即可实现 Spring 的所有配置。
自带应用监控
提供starter简化Maven配置,提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置
Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。
- Spring和SprigBoot的区别
项目周期:SpringBoot比Spring创建项目快。
简化配置:SpringBoot尽可能自动配置而Spring配置需要手动配置。
集成构建:SpringBoot提供了常用模块启动器少量配可以集成构建;而Spring集成流程繁琐。
部署方式:SpringBoot支持jar部署和war包部署,而Spring仅支持war包部署
web容器:SpringBoot内嵌入web容器,而Spring需要额外的依赖
2.3 第一个springboot程序
- 官方:提供了一个快速生成的网站!DEA集成了这个网站
2.3.1 方式1:
- 可以在官网填写信息后直接下载zip文件后,导入idea开发(https://start.spring.io/)
必须将web依赖勾选上,否则没有内嵌tomcat
- 解压项目包,并用编译器以Maven项目导入,以IntelliJ IDEA为例导入这个Maven.项目,一路下一步即可,直到项目导入完毕。如果是第一次使用,可能速度会比较慢,需要耐心等待一切就绪
2.3.2 方式2:
- 直接使用idea创建一个springboot项目(一般开发直接在IDEA中创建,IDEA创建也是通过官网创建的)
- 热部署依赖
-
在程序入口类SpringbootdemoApplication同级建业务包,才会被扫描到
-
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 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.7.0</version>
<relativePath/> <!-- lookup parent from repository --><!--远程在线的-->
</parent>
<groupId>com.example</groupId>
<artifactId>springbootdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbootdemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>12</java.version>
</properties>
<dependencies>
<!--一个个starter启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--springboot的所有依赖都以spring-boot-starter开头-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--web依赖,tomcat、dispachServlet、.xml不用手动配置了-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!--打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- 如上所示,主要有四个部分:
- 项目元数据信息:创建时候输入的Project Metadata部分,也就是Maven项目的基本元素,包括:groupld、artifactld、version、name、description等
- parent:继承spring-boot-starter-parent的依赖管理,控制版本与打包等内容
- dependencies:项目具体依赖,这里包含了spring-boot-starter-web用于实现HTTP接口(该依赖中包含了Spring MVC),官网对它的描述是:使用Spring MVC构建Web(包括RESTful)应用程序的入门者,使用Tomcat作为默认嵌入式容器。spring-boot-starter-test用于编写单元测试的依赖包。更多功能模块的使用我们将在后面逐步展开。
- build:构建配置部分。默认使用了spring-boot-maven-plugin,配合spring-boot-starter-parent就可以把Spring Boot应用打包成JAR来直接运行。
- 在启动类同级目录下创建controller包,并新建一个HelloController
//自动装配
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello";
}
}
- 然后启动程序入口类
//本身为一个spring组件
//程序主入口
@SpringBootApplication
public class SpringbootdemoApplication {
//SpringApplication
public static void main(String[] args) {
SpringApplication.run(SpringbootdemoApplication.class, args);
}
}
- 之后在控制台会打印启动消息
2022-07-27 23:12:55.533 INFO 5624 --- [ main] c.e.s.SpringbootdemoApplication : No active profile set, falling back to 1 default profile: "default"
2022-07-27 23:12:56.112 INFO 5624 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2022-07-27 23:12:56.119 INFO 5624 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-07-27 23:12:56.119 INFO 5624 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.63]
2022-07-27 23:12:56.198 INFO 5624 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-07-27 23:12:56.198 INFO 5624 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 640 ms
2022-07-27 23:12:56.419 INFO 5624 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2022-07-27 23:12:56.426 INFO 5624 --- [ main] c.e.s.SpringbootdemoApplication : Started SpringbootdemoApplication in 1.128 seconds (JVM running for 1.66)
2022-07-27 23:13:04.799 INFO 5624 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-07-27 23:13:04.799 INFO 5624 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2022-07-27 23:13:04.800 INFO 5624 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
- 从中找出可以请求的地址,来请求接口测试
- 修改端口:在application.properties文件中添加:
#更改项目端口号
server.port=8081
- banner.txt文件会将spring的启动图标替换为自定义的。在线生成网站:https://www.bootschool.net/ascii-art,只需要将在线生成的banner.txt放到类路径下resources目录下,项目启动的时候自动会将启动图标替换为banner.txt文件中的
下一篇:SpringBoot-03-Springboot自动装配原理
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123869.html