玩转Spring Boot框架教程03之Spring Boot配置文件01

三、Spring Boot配置文件

3.1 pom配置

<?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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.itcodeschool.springboot</groupId>

    <artifactId>HelloWorld</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <packaging>jar</packaging>

    <name>HelloWorld</name>

    <description>Demo projectfor Spring Boot</description>

  

    <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-web</artifactId>

        </dependency>

 

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-test</artifactId>

            <scope>test</scope>

        </dependency>

    </dependencies>

 

    <build>

        <plugins>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

        </plugins>

    </build>

</project>

 

配置说明:

spring-boot-starter-parent

Spring Boot的父级依赖,它封装了很多开发Spring Boot项目所需maven配置的默认依赖,可以省去常用常用包依赖的version标签。

如果想要看详细的可以在找到你的maven仓库下依次找到

……\Repository\org\springframework\boot\spring-boot-dependencies\2.0.0.RELEASE\spring-boot-dependencies-2.0.0.RELEASE.pom文件。可以用Editplus打开如下:

截取部分,重点看<properties>标签。

玩转Spring Boot框架教程03之Spring Boot配置文件01

玩转Spring Boot框架教程03之Spring Boot配置文件01

…………

通过以上部分配置文件可以看到,就是为我们定义好了很多常用依赖包的版本依赖。

spring-boot-starter-web

web相关的依赖

spring-boot-starter-test

单元测试相关,已经对单元测试进行了很好的封装和支持,是的我们在做单据测试时会更加简便。

spring-boot-maven-plugin

编译插件,在添加了该插件之后,当运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“Java -jar”命令就可以直接运行。这在很大程度上简化了应用的部署,只需要安装了 JRE 就可以运行。

还有更多spring-boot-starter相关pom文件配置参考英文原文:

https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-starter

3.2 项目结构

玩转Spring Boot框架教程03之Spring Boot配置文件01

HelloWorld:项目名称;

src/main/java:目录下放置所有java文件(源代码文件);

src/main/resources:放置所有的配置文件、页面文件、静态资源文件;

src/main/resources/application.propertiesSpring Boot提供的全局配置文件,可以自定义配置改变Spring Boot默认配置;

src/main/resources/static:是静态资源文件目录,在这个目录中的所有文件将可以被直接访问,如果没有这个文件夹可自行创建;

src/main/resources/ templates:模板文件存放目录

 

3.3 Spring Boot程序入口

玩转Spring Boot框架教程03之Spring Boot配置文件01

每一个Spring Boot 程序都有一个默认是项目名Application这样一个类,这个类有一个main方法,main方法作为程序的入口执行SpringApplication.run(HelloWorldApplication.class, args)启动了Spring Boot程序。

@SpringBootApplication注解是入口类核心注解,打开源码如下:

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Inherited

@SpringBootConfiguration

@EnableAutoConfiguration

@ComponentScan(excludeFilters = {

        @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),

        @Filter(type = FilterType.CUSTOM, classes =AutoConfigurationExcludeFilter.class) })

public@interfaceSpringBootApplication {

    @AliasFor(annotation = EnableAutoConfiguration.class)

    Class<?>[]exclude() default {};

    @AliasFor(annotation = EnableAutoConfiguration.class)

    String[]excludeName() default {};

    @AliasFor(annotation = ComponentScan.class, attribute = "basePackages")

    String[]scanBasePackages() default {};

    @AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")

    Class<?>[]scanBasePackageClasses() default {};

}

通过源码发现@SpringBootApplication注解是一个组合注解,组合了@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan注解,如果在程序入口类上不适用@SpringBootApplication注解也可以加上以上三个注解即可达到同等效果。

玩转Spring Boot框架教程03之Spring Boot配置文件01

@EnableAutoConfiguration 注解:

作用在于让 Spring Boot   根据应用所声明的依赖来对 Spring 框架进行自动配置,这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web依赖添加了TomcatSpring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置,自动配置SpringMVCTomcat

SpringBoot会自动扫描@SpringBootApplication注解所在类的同级包以及下级包里面的bean@SpringBootApplication注解放置的位置要能够保证controllerservicedao等能够纳入spring容器管理。

3.4 导入外部XML配置文件

@ImportResouce 注解:

SpringBoot理念就是零配置编程,但是在某种特殊业务逻辑下必须使用XML的配置,@ImportResouce注解加载XML配置文件,建议新建一个配置类,在类上加上@Configuration注解保证能够Spring boot扫描装配,再通过@ImportResource导入额外编写的xml配置文件,也可以通过启动类上直接加入@ImportResouce注入导入xml文件。

格式:

@ImportResource(value = { "路径" })或者使用@ImportResource(locations= { "路径" }),一样的效果,多个XML文件你可以用逗号“,”分隔,就这样轻而易举的引用XML配置。

@Configuration

@ImportResource(locations={"classpath:application-bean.xml"})

public  class Config {

}