Maven / Gradle 之Spring-Boot入门
Spring Boot是Spring 产品下的一个子项目,致力于快速便捷的搭建基于Spring的独立可运行的项目。
一:Maven项目
创建Maven项目就会自动生成一个配置文件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>
<groupId>con.spring</groupId>
<artifactId>Spring-Boot</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<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>
如果不想继spring-boot-starter-parent
项目,也可以使用依赖管理来引入spring-boot的依赖:
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.3.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
创建类文件,写入如下代码:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class Application {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
说明:
-
@RestController和@RequestMapping注解是Spring MVC注解(它们不是Spring Boot的特定部分)。具体查看Spring参考文档的MVC章节。
-
@EnableAutoConfiguration。这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。
-
main方法通过调用run,将业务委托给了Spring Boot的SpringApplication类。SpringApplication将引导我们的应用,启动Spring,相应地启动被自动配置的Tomcat web服务器。
使用mvn
命令之前,需要安装Maven : brew install maven
如果你的 pom.xml 使用了 spring-boot-starter-parent,则我们可以运行 :
$ mvn spring-boot:run
然后,使用浏览器打开 http://localhost:8080/ 你会看到下面的输出:
Hello World!
点击ctrl-c,可以关闭应用程序。
如果你的 pom.xml 中添加了 spring-boot-maven-plugin 插件,你可以运行:
$ mvn clean package // 命令在 target 目录生成一个可执行的 jar 文件
$ java -jar target/spring-boot-example-0.0.1-SNAPSHOT.jar //可以运行项目命令执行生成的 jar 文件:
命令启动应用:
使用Maven 编译项目的Spring-Boot应用的三种启动方式
二:Gradle项目
创建Gradle项目会自动生成一个build.gradle配置文件,项目所需要的依赖可以写在这个文件中. 因为自动生成的内容是不够的,故需要手动添加一些内容。
group 'com.test.gradle'
version '1.0-SNAPSHOT'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.2.RELEASE")
}
}
apply plugin: 'java' // 引入java插件,使得能够用gradle build命令
apply plugin: 'org.springframework.boot'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
使用Gradle编译运行项目:
$ gradle build
$ gradle bootrun
使用Gradle Wrapper
对于Gradle项目来说,使用Gradle Wrapper是非常推荐的,它其实是一个gradle包,使用它的好处:
- 不用安装gradle也能运行gradle
- 所有人使用相同的gradle版本
使用Gradle Wrapper需要在build.gradle配置文件中加入:
task wrapper(type: Wrapper) {
gradleVersion = '3.0'
}
然后在命令行运行:
gradle wrapper
这里的gradlew和gradlew.bat其实只是脚本文件(前者用于Unix/Linux/Mac,后者用于Windows),在使用gradle命令的地方替换为gradlew或gradlew.bat,他们将自动下载指定的gradle版本,然后用该版本进行项目构建。如上文所示,本文中我们配置gradle版本为3.0。
请注意,这三个文件(夹)都需要提交到代码库中。当项目其他人拿到代码之后,由于gradlew和gradlew.bat文件均在源代码中,他们本地即便没有gradle,依然可以通过以下命令进行项目构建:
./gradlew build
如果你的项目有持续集成(CI)服务器(你也应该有),那么你的CI机器也没有必要安装Gradle了。另外,此时所有人都是使用的相同版本的gradle,进而避免了由于版本不同所带来的问题。
在项目根目录下启动运行项目:
$ gradle bootrun
运行Spring-boot踩过的坑
运行gradle build总是会出现构建失败,其原因基本是:
默认的8080端口被占用