2.1、运用Spring Boot

    初始化目录结构

spring boot 解决依赖冲突 springboot的依赖_spring boot 解决依赖冲突

上图是一个名为readinglist项目初始化后的目录结构

build.gradle:Gradle构建说明文件,如果是maven的话就没有这个,因为是在书上截的图,所以有这个文件,我比较喜欢使用maven。

ReadingListApplication.java:应用程序的启动引导类也是主要的Spring配置类。

application.properties:用于配置应用Spring Boot 的属性。

ReadingListApplicationTests.java:一个基本的集成测试类。

    2.1.1启动引导类

启动引导类在Spring Boot应用中有两个作用:配置和启动引导。首先这是Spring主要的配置类。虽然Spring Boot自动配置免除了很多Spring配置,但是还需要少量的配置来启动自动配置。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication //开启组件扫描和自动配置
public class Application {

    //负责启动引导应用程序
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@SpringBootApplication开启了Spring的组件扫描和Spring的自动配置功能,实际上是将三个注解组合到了一起。

  • Spring的@Configuration:标明该类使用基于java的配置,就是使用java类替代.xml配置
  • Spring的@ComponentScan:启动组件扫描,就是自动扫包扫描那些@Bean @Controller @Service等等注解标注的方法或类到上下文
  • Spring Boot的@EnableAutoConfiguration:书中作者称这个注解为Abraccadabra(咒语的意思),这个注解开启了Spring Boot的自动配置功能,不用再写成篇的配置了。

也就是说  @SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiguration  你说厉害不厉害

@SpringBootApplication只有在Spring Boot 1.2.0版本以及之后的版本才有,如果是之前的版本就只能写三个注解了。

    2.1.2 集成测试类

一个Java程序员必须写测试,虽然我之前很少写!

Spring Boot 在构建项目的时候提供了测试的骨架

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;

@RunWith(SpringRunner.class)// SpringJUnit支持,由此引入Spring-Test框架支持!
@SpringBootTest// 指定我们SpringBoot工程的Application启动类
@WebAppConfiguration // 由于是Web项目,Junit需要模拟ServletContext,因此我们需要给我们的测试类加
public class SpringBootDemo1ApplicationTests {

    @Test
    public void contextLoads() {
    }

}

    2.1.3配置应用程序属性

server.port=8080

以上代码在application.properties文件中配置,设置嵌入的Tomcat舰艇端口为8080,在应用启动之后Spring Boot 会默认加载(不需要哦欸之的)application.properties 并且根据文件中设置的属性设置应用程序。

    2.1.4项目构建

目前比较常用的构建工具有Gradle和Maven,Gradle一直都没用过,我觉得Maven在依赖管理上来说更直观简单一些。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.glp</groupId>
    <artifactId>spring-boot-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-boot-demo</name>
    <description>Demo project for Spring Boot</description>

    <parent><!--继承spring-boot-starter-parent-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.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-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build><!--继承Spring Boot Maven插件-->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

2.2、起步依赖

2.3、自动配置