前言
----------
SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
Spring Boot的优缺点?
优点:配置精简。方便快捷。搭建速度快。学习门槛低。封装了很多常用的套件。例如:mybatis、hibernate、redis、mongodb等。自带应用监控。自动管理依赖。
缺点:集成度较高。学习的时候不太容易了解底层。学习文档不是很多。入门容易。深入难。jsp没法用,当你引入了依赖就会自动帮你配置,会造成一些错误配置,造成启动失败(我是没找到解决的方法)。
####(一)环境的搭建
首先搭建一个maven项目或直接访问http://start.spring.io/。下载demo案例
![这里写图片描述](//img-blog.csdn.net/20180313110501349?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjMzMDMyNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
通过eclipse>import>Existing Maven Projects>demo地址>Finish
对目录稍微调用一下如下:
![这里写图片描述](//img-blog.csdn.net/20180313110607352?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjMzMDMyNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
Spring Boot的启动类。(注意:必须放下子类包的外层)
配置简单的pom.xml文件
```
<!--springBoot的版本-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<!--编码-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<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>
<scope>true</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
```
利用Spring的MockMvc模仿http请求编写单元测试
```
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@WebAppConfiguration
public class DemoApplicationTests {
private MockMvc mvc;
@Autowired
private WebApplicationContext context;
@Before
public void setupMockMvc() throws Exception {
mvc = MockMvcBuilders.webAppContextSetup(context).build();
}
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/helloworld3").accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
}
```
####配置多环境切换
在application.properties下配置想要激活的环境即可(同目录下)
```
spring.profiles.active=dev
。。。
```
在application-dev.properties下配置
```
server.port=8081
。。。
```
####配置LogBack日志
Spring Boot默认会加载classpath:logback-spring.xml或者classpath:logback-spring.groovy。
如需要自定义文件名称,在 application.properties 中配置 logging.config 选项即可。
```
<configuration>
<!-- 文件输出格式 -->
<property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
<!-- test文件路径 -->
<property name="TEST_FILE_PATH" value="d:/test.log" />
<!-- pro文件路径 -->
<property name="PRO_FILE_PATH" value="/opt/test/log" />
<!-- 开发环境 -->
<springProfile name="dev">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<logger name="com.light.springboot" level="debug" />
<root level="info">
<appender-ref ref="CONSOLE" />
</root>
</springProfile>
</configuration>
```
其中,springProfile标签的name属性对应application.properties中的spring.profiles.active 的配置。
即 spring.profiles.active 的值可以看作是日志配置文件中对应的 springProfile 是否生效的开关。
####打包部署
打包的形式有两种:jar 和 war。
No1:jar包里面内含了tomcat。所以能直接运行的。
![这里写图片描述](//img-blog.csdn.net/20180313170846195?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3FxXzIzMzAzMjQ1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
运行命令
```
java -jar demo-0.0.1-SNAPSHOT.jar
```
No2:war打包
修改pom.xml
`<packaging>war</packaging>`
修改启动类:
```
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```
最后放到tomcat目录下。启动tomcat.