首先,我们通过Spring官方提供的Spring Initializr方式初始化一个web项目,访问https://start.spring.io/,配置相关信息,如下图:

spring boot 生成uuid spring boot build_spring boot 生成uuid

需要注意的是,我们选择的是Gradle Project,Spring Boot版本选择的是1.5.20,设置好这些之后点击Generrate Project就会下载生成好的工程文件。解压出来以后会看到里面包含如下内容:

spring boot 生成uuid spring boot build_spring boot 生成uuid_02

接下来在命令行使用gradle build命令来编译我们的项目

spring boot 生成uuid spring boot build_spring_03

编译成功以后我们会发现,在工程的根目录下多了一个build目录,在build目录的lids目录里面有一个hello-world-0.0.1-SNAPSHOT.jar文件,这个文件就是该工程的可执行jar文件

spring boot 生成uuid spring boot build_spring_04

接下来我们就通过执行这个jar文件来启动我们的项目,在命令行用java -jar来执行这个jar包

spring boot 生成uuid spring boot build_spring_05

 如下图,项目已经启动成功

spring boot 生成uuid spring boot build_spring_06

首先我们看一下项目的配置文件build.gradle,可以发现默认使用的是maven的中央仓库,国内访问的话可能会受到网络限制,所以将仓库替换成国内的,这里就替换成阿里云的仓库,如下图

spring boot 生成uuid spring boot build_spring boot 生成uuid_07

接下来我们来看一下程序的启动类AApplication

package com.yaoz.hello.helloworld;

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);
    }

}

这个启动类最主要的就是@SpringBootApplication注解,我们来看一下这个注解的注释说明

spring boot 生成uuid spring boot build_spring_08

通过注解我们知道,@SpringBootApplication这个注解等同于@Configuration,@EnableAutoConfiguration,@ComponentScan这三个注解的组合。其中@Configuration是和@Bean注解结合使用的,这两个注解结合使用用来创建一个spring的配置类,代替xml的配置文件,@Configuration注解就是标志着可以使用spring的IOC容器作为Bean的来源,@Bean注解就是告诉spring带有@Bean注解的方法会返回一个对象,这个对象会被注册为spring应用程序上下文中的一个Bean;@EnableAutoConfiguration注解可以自动配置spring的上下文,根据类路径和bean的定义实现自动配置;@ComponentScan注解会自动扫描定义包下的带有@Component(也包括@Component的子注解,例如@Service、@Controller等等)注解的类,并将其注册为bean。

 

现在我们来写一个控制器HelloController,用来接收http请求并处理

package com.yaoz.hello.helloworld.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!";
    }
}

现在我们来写一个测试类来验证一下,在src/test/java/com.yaoz.hello.helloworld.controller下创建一个测试类

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HelloControllerTest {
    //由于我们使用的是mvc框架,所以需要一个mockMvc对象
    @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!")));
    }
}

这里我们先创建一个mockMvc对象用来构建一个http请求,我们发送的是get请求,接收的是json格式的响应,andExpect()方法添加期望进行断言,首先断言状态码是否是200,然后断言响应的内容是不是"hello world!",运行一下测试方法,结果如下:

 

spring boot 生成uuid spring boot build_java_09

测试通过。现在我们来启动我们的项目,在浏览器访问以下看看效果:

spring boot 生成uuid spring boot build_spring_10