简单的搭建Spring Boot 项目
搭建一个spring boot+gradle+swagger的项目,包括简单的项目结构介绍。
Spring boot+gradle 项目搭建(IntelliJ)
- 新建项目
- 选择Spring Initializr
- 给你的项目填写一点信息,Group和Artifact你随便填(填的格式不对的话,IntelliJ会提示你的),Type选Gradle Project,Packaging选War,然后点下一步;
- 选择自己需要的依赖;
- 点击下一步,点击完成即可;
- 选择位置和gradle位置及jdk;
问题
- 开始没有右面的gradle projects选项;
解决方法:清空缓存并重新打开
- 刷新gradle时报错
Error:No such property: GradleVersion for class: JetGradlePlugin
解决方法:
修改gradle-wrapper.properties(位于项目根目录的gradle/wrapper下)的:gradle版本,我是从gradle-5.1-all.zip降级到gradle-4.10.2(当前使用的)
- 报log4j日志错误
解决:修改依赖 - 卡在Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext处
未解决。 使用IDEA2017.1.4版本集成spring boot 2.1.3+gradle 出现了一堆错误,决定暂时放弃,使用spring boot 2.1.3+maven 仅有6的错误;使用spring boot 1.5.19+gradle没有错误(去https://start.spring.io/选择版本创建)。 - Maven+spring Boot报错
解决:https://blog.csdn.net/plei_yue/article/details/78912616
项目结构
Spring Boot的基础结构共三个文件:
src/main/java 程序开发以及主程序入口
src/main/resources 配置文件
src/test/java 测试程序
另外,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 负责页面访问控制
https://blog.csdn.net/ityouknow/article/details/80490926
启动
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String index() {
return "Hello World";
}
}
@RestController 的意思就是controller里面的方法都以json格式输出,不用再写什么jackjson配置的了!
启动主程序,打开浏览器访问http://localhost:8080/hello,就可以看到效果。
测试
打开的src/test/下的测试入口,编写简单的http请求来测试;使用mockmvc进行,利用MockMvcResultHandlers.print()打印出执行结果。
package com.example.demo4;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
/**
* Created by Administrator on 2019/3/8 0008.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MockServletContext.class)
@WebAppConfiguration
public class HelloWorldControllerTest {
private MockMvc mvc;
@Before
public void setUp() throws Exception {
mvc = MockMvcBuilders.standaloneSetup(new HelloWorld()).build();
}
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
}