SpringBoot特性
- 创建独立的Spring应用。
- 直接嵌入Tomcat、Jetty、Undertow等Web容器。
- 提供starter依赖,简化构建配置。
- 条件满足时,自动装配Spring或第三方类库。
- 提供运维特性,如指标、健康检查、外部化配置。
- 无代码生成,不需要XML配置。
命令行方式创建SpringBoot
1.使用Maven Archetype插件
mvn archetype:generate -DgroupId=thinking.in.spring.boot -DartifactId=first-spring-boot-application -Dversion=1.0.0-SNAPSHOT -DinteractiveMode=false
2.增加SpringBoot依赖
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>thinking.in.spring.boot</groupId> <artifactId>first-spring-boot-application</artifactId> <packaging>jar</packaging> <version>1.0.0-SNAPSHOT</version> <name>《SpringBoot编程思想》第一个SpringBoot项目</name> <url>http://maven.apache.org</url> <dependencies> <!-- 增加Spring Boot Web依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.0.2.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies></project>
3.调整引导类
@RestController@SpringBootApplicationpublic class App { @RequestMapping("/") public String index() { return "welcome, My Buddy!" } public static void main( String[] args ) { SpringApplication.run(App.class, args); }}
4.使用Spring Boot Maven插件引导Spring Boot应用,需要在pom.xml中添加如下代码:
<!-- 添加Spring Boot Parent POM --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> </parent>
5.在项目根目录执行如下指令mvn spring-boot:run
6.检验HTTP服务
浏览器地址栏输入http://127.0.0.1:8080/
构建可执行JAR
1.需要在pom文件中添加如下插件:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
按ctrl+C键停止项目后,执行mvn package,将会在项目target目录下生成first-spring-boot-application-1.0.0-SNAPSHOT.jar。
2.执行Spring Boot应用可执行JARjava -jar target/first-spring-boot-application-1.0.0-SNAPSHOT.jar
3.jar包结构说明
BOOT-INF/classes:存放应用编译后的class文件;
BOOT-INF/lib:存放应用依赖的jar包;
META-INF/:存放应用相关元信息,如MANIFEST.MF文件;
org/:存放Spring Boot相关的class文件。
4.jar命令运行成功的原因
Manifest-Version: 1.0Implementation-Title: 《SpringBoot编程思想》第一个SpringBoot项目Implementation-Version: 1.0.0-SNAPSHOTBuilt-By: djnImplementation-Vendor-Id: thinking.in.spring.bootSpring-Boot-Version: 2.0.2.RELEASEMain-Class: org.springframework.boot.loader.JarLauncherStart-Class: thinking.in.spring.boot.AppSpring-Boot-Classes: BOOT-INF/classes/Spring-Boot-Lib: BOOT-INF/lib/Created-By: Apache Maven 3.6.0Build-Jdk: 1.8.0_181Implementation-URL: http://maven.apache.org
java -jar命令引导的启动类必须配置在MANIFEST.MF资源的Main-Class属性中,项目的引导类定义在Start-Class属性中。
通过Java命令在解压的根目录中引导该类文件,发现项目确实被启动:java org.springframework.boot.loader.JarLauncher