一.首先要确保自己安装java环境和gradle.
这里记录一下ubuntu上快速装gradle:
1.添加ppa仓库
sudo add-apt-repository ppa:cwchien/gradle
2.更新源
sudo apt-get update
3.查看可以安装版本
apt-cache search gradle
4.安装(我这里是装的是4.3.1)
sudo apt-get install gradle-4.3.1
二.通过Spring Initializr初始化一个Spring Boot原型
1.进入Spring官网(https://start.spring.io/),根据自己要求选填,点击Generate Project按钮会下载一个zip格式的压缩包;
三.用Gradle编译项目
1.在项目的根目录,执行gradle build命令对项目构建.
2.在该目录下的build/libs目录下会生成一个jar包(就是编译后的可执行文件),用java -jar ***.jar运行该文件.
3.打开网址输入"localhost:8080",会出来网页,由于项目中没有任何请求的处理程序,因此Spring Boot会出现默认的错误提示信息.
4.下面是项目的目录结构.
.
├── build
│ ├── classes
│ │ └── java
│ │ ├── main
│ │ │ └── com
│ │ │ └── libo
│ │ │ └── spring
│ │ │ └── boot
│ │ │ └── blog
│ │ │ └── initializrstart
│ │ │ └── InitializrStartApplication.class
│ │ └── test
│ │ └── com
│ │ └── libo
│ │ └── spring
│ │ └── boot
│ │ └── blog
│ │ └── initializrstart
│ │ └── InitializrStartApplicationTests.class
│ ├── libs
│ │ └── initializr-start-0.0.1-SNAPSHOT.jar
│ ├── reports
│ │ └── tests
│ │ └── test
│ │ ├── classes
│ │ │ └── com.libo.spring.boot.blog.initializrstart.InitializrStartApplicationTests.html
│ │ ├── css
│ │ │ ├── base-style.css
│ │ │ └── style.css
│ │ ├── index.html
│ │ ├── js
│ │ │ └── report.js
│ │ └── packages
│ │ └── com.libo.spring.boot.blog.initializrstart.html
│ ├── resources
│ │ └── main
│ │ ├── application.properties
│ │ ├── static
│ │ └── templates
│ ├── test-results
│ │ └── test
│ │ ├── binary
│ │ │ ├── output.bin
│ │ │ ├── output.bin.idx
│ │ │ └── results.bin
│ │ └── TEST-com.libo.spring.boot.blog.initializrstart.InitializrStartApplicationTests.xml
│ └── tmp
│ ├── bootJar
│ │ └── MANIFEST.MF
│ ├── compileJava
│ └── compileTestJava
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── libo
│ │ └── spring
│ │ └── boot
│ │ └── blog
│ │ └── initializrstart
│ │ └── InitializrStartApplication.java
│ └── resources
│ ├── application.properties
│ ├── static
│ └── templates
└── test
└── java
└── com
└── libo
└── spring
└── boot
└── blog
└── initializrstart
└── InitializrStartApplicationTests.java
1).build.gradle文件:这个是项目的构建脚本,Gradle是以Groovy语言为基础,使用的是简洁的Groovy脚本语言.
buildscript {//buildscript中的脚本优先执行
//ext 用于定义动态属性
ext {
springBootVersion = '2.0.3.RELEASE'
}
//使用maven的中央仓库,也可以指定其他库
repositories {
mavenCentral()
}
//依赖关系
dependencies {
//classpath说明执行脚本时,ClassLoader可以使用这些依赖项
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
//使用插件
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'com.libo.spring.boot.blog'
//指定生成的编译文件的版本,默认是Jar包
version = '0.0.1-SNAPSHOT'
//jdk版本
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
//依赖用于编译阶段
compile('org.springframework.boot:spring-boot-starter-web')
//依赖用于测试阶段
testCompile('org.springframework.boot:spring-boot-starter-test')
}
2).gradlew和gradlew.bat:是Gradle Wrapper用于构建项目的脚本.使用Gradle Wrapper(不必预先安装Gradle工具,构建项目时会检查是否存在Gradle,如果不存在,会根据配置上的Gradle的版本和安装包的位置来自动获取安装包,并构建项目)的好处在于可以使项目组成员能够使用相同Gradle版本,避免导致编译失败的问题,前者在UNIX上使用后者在Windows上使用.
3).build和.gradle目录:构建后生成的目录和文件.
4).Gradle Wrapper:每个Gradle Wrapper都绑定一个特定的版本的Gradle,当用户在第一次给定的Gradle版本下运行上面的命令之一时,会下载相应的Gradle发布包,并用它来执行构建.
5).src目录
四.项目开发及测试
复制样例程序"initializr-start"到新的hello-world目录下,当然不需要编译文件,最终,新项目的根目录下会有gradle,src目录及build.gradle,gradlew.bat,gradlew文件
1.打开build.gradle文件,将version = '1.0.0',来规范一下.
2.为了规范,将src下的com.libo.spring.boot.blog.initializrstart包内的initializrstartApplication.java改为Application.java,并放在blog目录下,删掉initializrstart文件夹,注意要将java文件中的package以及相关内容全部修改.
package com.libo.spring.boot.blog;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@SprinngBootApplication = (默认属性的)@Configuration+@EnableAutoConfiguration+@ComponentScan
3.在blog下创建controller文件夹(即对应的包),并创建HelloController.java文件,如下
package com.libo.spring.boot.blog.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController{
@RequestMapping("/hello")
public String hello(){
return "Hello World! Welcome to visit libo.com!";
}
}
@RestController 等价于@Controller与@ResponseBody的组合,主要用于返回在RESTful应用常用的JSON格式数据,暗示用户,这是一个支持REST的控制器.
@ResponseBody:将Controller的方法返回对象,通过适当的HttpMessageConverter转换为指定格式后,写入Response对象的body数据区.
@RequestMapping:是用来处理请求地址映射的注解,可用在类和方法之上.用在类上,表示类中的所有响应请求的方法都是以改地址作为父路径.还有一些类似的如GetMapping,PostMapping,PutMapping,DeleteMapping,PatchMapping.
4.测试类就不解释了,编写和规范和上述类似,下面是测试代码,JUnit进行测试,
package com.libo.spring.boot.blog.controller;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HelloControllerTest{
@Autowired
private MockMvc mockMvc;
@Test
public void testHello() throws Exception{
mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andExpect(content().string(equalTo("Hello World! Welcome to visit libo.com!")));
}
}
5.测试通过后,可以对项目gradle build,来编译,并用java启动jar包.当然,也可以使用Gradle Wrapper来进行构建.
五.导入IDE(eclipse)
1.在eclipse中安装Gradle插件Bulidship.
2.import提示一步一步来.