SpringBoot环境搭建

这篇博客介绍了如何从零开始搭建SpringBoot项目,包括在start.spring.io上创建项目,IDEA导入,以及添加web模块和编写RESTful API。还提到了SpringBoot的目录结构,单元测试的便利性,以及如何使用MockMvc进行测试。
摘要由CSDN通过智能技术生成

1. 背景

因为要做一个Java hook相关的东西,需要用到SpingBoot,作为自己的测试目标。可是,之前没有接触过啊!!在网上搜搜资料,现学现卖吧。

2. SpringBoot项目快速搭建

2.1 简单的框架程序

(a)在http://start.spring.io/上可以快速构建一个Spring Boot框架程序,并下载到本地;
(b)本地用IDEA直接导入下载的本地程序;
(c)spingboot建议的目录结果如下:
假设root package为:com.example.myproject

com
  +- example
    +- myproject
      +- Application.java
      |
      +- domain
      |  +- Customer.java
      |  +- CustomerRepository.java
      |
      +- service
      |  +- CustomerService.java
      |
      +- controller
      |  +- CustomerController.java
      |

其中,各自目录的作用如下:

1、Application.java 建议放到跟目录下面,主要用于做一些框架配置
2、domain目录主要用于实体(Entity)与数据访问层(Repository)
3、service 层主要是业务类代码
4、controller 负责页面访问控制

在默认配置下,一个简单Spring Boot程序就完工了。

2.2 引入web模块

上面的程序很简单,可以说几乎什么功能都没有。而我们需要引入web功能,该怎么办,也很简单。
1、先在pom.xml中增加web模块的依赖支持

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

pom.xml文件中默认有两个模块:
spring-boot-starter:核心模块,包括自动配置支持、日志和YAML;
spring-boot-starter-test:测试模块,包括JUnit、Hamcrest、Mockito。

2、添加一个controller

@RestController
public class HelloWorldController {
    @RequestMapping("/hello")
    public String processHello() {
        return "Hello Spring Boot!";
    }
}

@RestController的意思就是controller里面的方法都以json格式输出,不用再写什么jackjson配置的了!
@RequestMapping的作用是将请求的路径和相应的处理函数映射起来。

3、启动主程序,打开浏览器访问http://localhost:8080/hello,就可以看到效果了!

3. SpringBoot框架下的单元测试

用UT来做触发程序,要比每次通过client去访问URL要方便很多。至于如何增加UT的code,也很简单。
对需要增加UT的class,直接在class name上右键"goto"->“test”,如果没有对于的test文件,可以自行创建;如果有,则会跳转到对于的teat文件。真是异常简单啊~

编写简单的http请求来测试,使用mockmvc进行,利用MockMvcResultHandlers.print()打印出执行结果。

@RunWith(SpringRunner.class)
@SpringBootTest
class HelloWorldControllerTest {
    private MockMvc mvc;

    @BeforeEach
    void setUp() {
        System.out.println("[HelloWorldControllerTest] setup");
        mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
    }

    @AfterEach
    void tearDown() {
        System.out.println("[HelloWorldControllerTest] tear down");
    }

    @Test
    void processHello() throws Exception {
        System.out.println("[HelloWorldControllerTest] index hello");
        mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
    }
}

在IDEA中,如果想执行所有的UT,直接在UT的顶层package上执行即可。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值