Spring Boot Learning(helloWorld)

Posted eric

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot Learning(helloWorld)相关的知识,希望对你有一定的参考价值。

使用 Spring Tool Suite 工具开发,注意和eclipse版本的队员。

步骤:

 

 

 

最后生成的目录结构:

 

在这里我们可以通过查看pom.xml看看都有哪些包被依赖了进去:

可以看到,当在前面建立工程的时候选择web,默认回引入内置的tomcat。

接下来,代码:

package com.example.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "index")
public class IndexController {

	@RequestMapping
	public String index() {
		return "hello spring boot!";
	}
}

关于RestController标签,查看源码,它其实就是Controller标签的拓展。

 访问:

运行:可以使用两种方式,区别就是Spring Boot App在关闭的时候有回调,另外一个没有,具体可以通过控制台日志看出来。开发时候建议使用下面的方式运行。

 

添加DevTools,它会监控当前项目,如果有更改会自动更新、编译、重启服务器。

 继续:

 

package com.example.controller;

import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "index")
public class IndexController {

	@RequestMapping
	public String index() {
		return "hello spring boot!";
	}

	@RequestMapping(value = "get")
	public Map<String, String> get(@RequestParam String name) {

		Map<String, String> map = new HashMap<String, String>();
		map.put("name", name);
		map.put("value", "hello boot");

		return map;
	}
}

 

 

默认会返回json,已经引入了jackon包。

Controller返回对象:

新建User类:

package com.example.bean;

import java.util.Date;

public class User {

    private int id;

    private String name;

    private Date date;

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public Date getDate() {
        return date;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setDate(Date date) {
        this.date = date;
    }
}

修改Controller:

package com.example.controller;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.example.bean.User;

@RestController
@RequestMapping(value = "index")
public class IndexController {

    @RequestMapping
    public String index() {
        return "hello spring boot!";
    }

    @RequestMapping(value = "get")
    public Map<String, String> get(@RequestParam String name) {

        Map<String, String> map = new HashMap<String, String>();
        map.put("name", name);
        map.put("value", "hello boot");

        return map;
    }

    @RequestMapping(value = "find/{id}/{name}")
    public User get(@PathVariable int id, @PathVariable String name) {

        User user = new User();
        
        user.setId(id);
        user.setName(name);
        user.setDate(new Date());

        return user;
    }
}

访问:

单元测试(使用spring提供的mock):

package com.example;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import com.example.controller.IndexController;

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    private MockMvc mvc;

    @Before
    public void before() {
        this.mvc = MockMvcBuilders.standaloneSetup(new IndexController()).build();
    }

    @Test
    public void contextLoads() throws Exception {
        RequestBuilder rq = get("/index");
        mvc.perform(rq).andExpect(status().isOk()).andExpect(content().string("hello spring boot!"));
    }

}

 

打包:

 

打包后生成目录:

其中,.jar为最终包,会把相关的依赖也包含进去。.original则只是当前代码。

直接java -jar demo-0.0.1-snapshot.jar运行。

以上是关于Spring Boot Learning(helloWorld)的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot Learning(helloWorld)

Spring Boot Learning(日志配置)

Spring Boot Learning(配置文件--多环境配置)

Swagger Learing - Spring Boot 整合swagger

Spring Boot 中修改端口和上下文路径

Spring Boot