三、SpringBoot介绍
1.parent
- 前言:之前是使用spring/springmvc 开发,整合不同的组件会有很多依赖,这些依赖会涉及到很多的版本信息,版本信息多了之后可能会导致版本冲突问题
- 概述:把很多组件技术的搭配放到一起,名字就叫 parent
1.1实际开发中会引入 parent
-
引入parent
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.5</version> <relativePath/> <!-- lookup parent from repository --> </parent>
-
点击后发现又引入了一个 parent
- 通过该parent 能够找到对应的搭配
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.7.5</version> </parent>
-
通过propertie管理版本信息
<properties> <activemq.version>5.16.5</activemq.version> <antlr2.version>2.7.7</antlr2.version> <appengine-sdk.version>1.9.98</appengine-sdk.version> <artemis.version>2.19.1</artemis.version> <aspectj.version>1.9.7</aspectj.version> <assertj.version>3.22.0</assertj.version> <atomikos.version>4.0.6</atomikos.version> <awaitility.version>4.2.0</awaitility.version> <build-helper-maven-plugin.version>3.3.0</build-helper-maven-plugin.version> <byte-buddy.version>1.12.18</byte-buddy.version> <cache2k.version>2.6.1.Final</cache2k.version> </properties>
-
通过dependencyManagement去管理依赖,子模块想要使用需要去引用依赖才可以,该标签不强制使用依赖需要时才导入
<dependencyManagement> <dependencies> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-amqp</artifactId> <version>${activemq.version}</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-blueprint</artifactId> <version>${activemq.version}</version> </dependency> </dependencyManagement>
1.2引入依赖
-
通过 dependencies
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
通过导入方式获取依赖(使用alibaba的方式创建的)
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
2.starter
- 回顾springmvc
- 问题:之前的操作导入依赖比较麻烦,比如我们要使用Spring-webmvc 一定会去使用Spring-web
- 引入太繁琐不好管理
- starter:springboot团队直接把这些固定搭配技术做成一个成品
2.1实际开发体验
-
开发springmvc(引入此依赖就解决了springmvc的一系列引用,内部引用了多个web开发需要的依赖,就可以直接进行web的开发)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
点击引入的依赖会有如下依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.7.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> <version>2.7.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>2.7.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.23</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.23</version> <scope>compile</scope> </dependency> </dependencies>
-
如何引入json操作
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> <version>2.7.5</version> <scope>compile</scope> </dependency>
-
点开又会找到曾经我们导入的依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.7.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.23</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.4.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jdk8</artifactId> <version>2.13.4</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.13.4</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-parameter-names</artifactId> <version>2.13.4</version> <scope>compile</scope> </dependency> </dependencies>
2.2starter总结
-
starter 其实就是很多个坐标的组合
-
以后引入了什么坐标,直接通过maven观察即可
2.3parent和starter总结
- parent作用:
- 定义若干版本信息,交给springboot统一管理,目的是减少依赖冲突
- starter作用
- 在同一个坐标中定义多个坐标,目的是简化依赖配置
- 使用步骤
- 先去找有没有starter ,如果有直接引用
- 没有直接提供版本信息即可
3.引导类
3.1传统spring配置
- 提供如下配置
- SpringConfig
- SpringMvcConfig
3.2引导类作用
-
SpringBoot工程提供引导类用来启动程序
-
SpringBoot工程启动后创建并初始化Spring容器
-
证明创建了Spring容器
@SpringBootApplication public class FourSpringbootApplication { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(FourSpringbootApplication.class, args); TestController bean = context.getBean(TestController.class); System.out.println(bean.test04()); } }
-
-
注意:引导类必须有一个注解@SpringBootApplication,否则启动不起来
4.内嵌tomcat
4.1定义依赖
-
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
点开发现如下依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.7.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> <version>2.7.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>2.7.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.23</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.23</version> <scope>compile</scope> </dependency> </dependencies>
-
点击spring-boot-starter-tomcat
<dependencies> <dependency> <groupId>jakarta.annotation</groupId> <artifactId>jakarta.annotation-api</artifactId> <version>1.3.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>9.0.68</version> <scope>compile</scope> <exclusions> <exclusion> <artifactId>tomcat-annotations-api</artifactId> <groupId>org.apache.tomcat</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-el</artifactId> <version>9.0.68</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-websocket</artifactId> <version>9.0.68</version> <scope>compile</scope> <exclusions> <exclusion> <artifactId>tomcat-annotations-api</artifactId> <groupId>org.apache.tomcat</groupId> </exclusion> </exclusions> </dependency> </dependencies>
4.2Tomcat运行原理
-
tomcat:是java语言开发的软件,就可以通过直接创建tomcat对象的方式去运行tomcat
-
如何交给spring管理的
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>9.0.68</version> <scope>compile</scope> <exclusions> <exclusion> <artifactId>tomcat-annotations-api</artifactId> <groupId>org.apache.tomcat</groupId> </exclusion> </exclusions> </dependency>
-
通过 starter引入 tomcat 服务器之后就可以直接创建tomcat对象了
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>2.7.5</version> <scope>compile</scope> </dependency>
4.3更换内置服务器
-
tomcat(默认):apache公司的,受众大,使用多,提供了较多组件
-
jetty:轻量级服务器,负载比tomcat弱
-
undertow
-
更换内置服务器操作
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency> </dependencies>
4.4总结
- tomcat 只是springboot中的一个依赖而已
- 想要什么服务器,直接导入对应的starter包即可