SpringBoot使用介绍
- 2018-12-20 22:50:00
- admin
- 原创 2723
一、SpringBoot使用简介
1、创建项目:https://start.spring.io
2、依赖组件版本:https://docs.spring.io/spring-boot/appendix/dependency-versions/properties.html
3、组件加载顺序:@Configuration → @WebListener → @Service | @Controller | @Component → 端口监听
4、Runner:ApplicationRunner,用于启动初始化,初始化失败进程退出;
5、Runner:CommandLineRunner,用于启动初始化,初始化失败进程退出;
6、Runner:Web服务的流量这个时候已经允许进来,不能有影响服务可用性的操作;
7、@Transactional:同一个类A方法调用B方法,调用B方法不经过动态代理,所以不会产生新的事务;
8、@Transactional:不同的类A方法调用B方法,默认B方法加入A方法的事务,A或B的非吞噬异常都会导致事务回滚;
项目结构:
1、Application.java建议放到根目录,主要用于做框架配置;
2、domain主要用于实体Entity与数据访问层DAO;
3、service主要是业务类代码;
4、controller负责页面访问控制;
5、commons负责一些工具类;
maven wapper:
1、用于自动下载maven,没有时自动下载maven,版本不对时下载指定版本maven;
2、.mvn,maven wapper的配置文件;
3、mvnw,maven wapper的linux脚本;
4、mvnw.cmd,maven wapper的windows脚本;
5、SpringBoot项目可以使用mvnw,或直接使用本机mvn;
增加web支持:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
增加热部署支持:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
不执行测试代码:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
1、surefire用于单元测试,执行*Test.java代码;
2、failsafe用于集成测试,执行*IT.java代码;
3、-Dmaven.test.skip=true同时禁止编译和运行,-DskipTests仅禁止运行测试代码;
spring-boot插件目标:
mvn spring-boot:help
mvn spring-boot:run,启动spring-boot应用,和eclipse的run行为一样,不能再执行其它goal;
mvn spring-boot:start,启动spring-boot应用,和eclipse的run行为一样,可以再执行其它goal;
mvn spring-boot:stop
controller示例:
@RestController
public class SampleController {
@RequestMapping("/hello")
public String index() {
return "Hello World";
}
}
测试用例示例:
import org.junit.*;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.*;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.*;
import org.springframework.test.web.servlet.*;
import org.springframework.test.web.servlet.setup.*;
import org.springframework.test.web.servlet.request.*;
import org.springframework.test.web.servlet.result.*;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SampleControllerTests {
private MockMvc mvc;
@Before
public void setUp() throws Exception {
mvc = MockMvcBuilders.standaloneSetup(new SampleController()).build();
}
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
}