Spring Boot 入门学习篇(一)

前言


----------


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.
posted @ 2018-03-13 17:35  北斗-七星  阅读(244)  评论(0编辑  收藏  举报