title: 构建微服务:Spring boot 入门篇

什么是spring boot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

1. maven构建项目

1.1. 访问http://start.spring.io/

1.2. 选择构建工具Maven Project、Spring Boot版本2.0.0.BUILD-SNAPSHOT以及一些工程基本信息.
spring-initializr.png

输入项目信息  :
Group : com.alanzh.portal
Artifact : wish-platform

1.3. 输入dependencies : 在Search for dependencies 选择 web

1.4. 最后点击 Generate Project

1.5. 解压后,使用eclipse,Import -> Existing Maven Projects -> Next ->选择解压后的文件夹-> Finsh.

注: 因为网络环境 Spring Boot依赖下载困难, 可以更改本地 maven setting.xml 添加 阿里的镜像.

<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>

2.项目结构介绍 Spring Boot的基础结构共三个文件:

  • src/main/java 程序开发以及主程序入口

  • src/main/resources 配置文件

  • src/test/java 测试程序

注:springboot建议的目录结果如下:

package结构:com.example.myproject

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

2.1、Application.java 建议放到跟目录下面,主要用于做一些框架配置

2.2、domain目录主要用于实体(Entity)与数据访问层(Repository)

2.3、service 层主要是业务类代码

2.4、controller 负责页面访问控制

采用默认配置可以省去很多配置,当然也可以根据自己的喜欢来进行更改

最后,启动Application main方法,至此一个java项目搭建好了!

3.引入web模块

3.1、pom.xml中添加支持web的模块:(PS: 已经在生成项目的时候选择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。

3.2 编写controller内容

@RestController
public class WishEntryAction {

    @RequestMapping("/")
    public String index() {
        return "Hello World!";
    }
}

@RestController的意思就是controller里面的方法都以json格式输出,不用再写什么jackjson配置的了!

3.3 启动主程序(在myprojectApplication.java run Spring Boot APP),打开浏览器访问http://localhost:8080.

4.如何做单元测试

打开的src/test/下的测试入口,编写简单的http请求来测试;使用mockmvc进行,利用MockMvcResultHandlers.print()打印出执行结果。

@RunWith(SpringJUnit4ClassRunner.class)
public class WishEntryActionTest {
    private MockMvc mockMvc;

    @Before
    public void setUp() throws Exception {
        mockMvc = MockMvcBuilders.standaloneSetup(new WishEntryAction()).build();
    }

    @Test
    public void testIndex() throws Exception {
        MockHttpServletRequestBuilder mockHttpServletRequestBuilder = MockMvcRequestBuilders.get("/");

        mockHttpServletRequestBuilder= mockHttpServletRequestBuilder.accept(MediaType.APPLICATION_JSON);

        ResultActions resultActions = mockMvc.perform(mockHttpServletRequestBuilder);

        resultActions = resultActions.andExpect(MockMvcResultMatchers.status().isOk());
        resultActions = resultActions.andDo(MockMvcResultHandlers.print());

        resultActions.andReturn();
    }

}

执行 mvn test 可以查看结果