本文开始搭建简单的SpringBoot应用,并就涉及的部分小知识点进行描述,本文主要内容为:
参考SpringBoot官网搭建一个简单的父子工程,父工程和子工程pom依赖及版本管理,SpringBoot默认包扫描,yml文件解析和配置修改,配置文件加载顺序,外部配置文件的加载,jar或war打包运行原理;@SpringBootApplication注解和@EnableAutoConfiguration注解及@ConditionXXXX条件注解意义。
(1)SpringBoot官网搭建一个简单的父子工程:https://docs.spring.io/spring-boot/docs/2.1.14.RELEASE/reference/html/getting-started.html文档对不同版本的SpringBoot所支持的JDK,Maven,Gradle,Servlet容器的版本都做了介绍,下面我们以maven构建为例进行搭建:
a)首先创建一个maven父工程,同时新建一个maven子工程,项目结构如下:
在父pom.xml中引入所需要的的jar依赖,主要为spring-boot-starter-parent以及spring-boot-starter-web,如果使用内置Tomcat进行项目打包发布运行,则还需要引入相应的plugin插件;同时声明包含的子工程:
<?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> <groupId>com.example</groupId> <artifactId>myspringboot</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>springboot_1</module> </modules> <!-- Inherit defaults from Spring Boot --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> </parent> <!-- dependencies会被子工程完全引用 --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <!-- 子工程引用时只会继承版本号,不需要在子工程声明版本号 --> <dependencyManagement> </dependencyManagement> <!-- 以可执行jar运行所需插件 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
b)在新建的子工程pom.xml中,引入父工程的pom,同时加入子工程自己所需的依赖,注意子工程里的依赖不需要加版本号,因为已经在父工程中统一管理了(这是一个父子工程pom管理的知识点,后面会说明):
<?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>
<artifactId>springboot_1</artifactId>
<!-- 引入父工程 -->
<parent>
<artifactId>myspringboot</artifactId>
<groupId>com.example</groupId>
<