集成Spring boot

  • 构建SpringBoot项目,先配置Maven配置,下面有两种方式

    • 方式一

      • 集成Spring Boot时,官方示例中,都是让我们继承一个Springspring-boot-starter-parent 这个parent,这样就集成了
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        </parent>

        <dependencies>
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        </dependencies>
    • 方式二

      • 一般情况下,在我们自己的项目中,会定义一下自己的Maven parent 项目,这种情况下,上面的这种做法就行不通了。那么,该如何来做呢?其实,在Spring的官网也给出了变通的方法的,在我们自己 parent 项目中,加下下面的声明:

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        <dependencyManagement>
        <dependencies>
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>1.5.1.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
        </dependencies>
        </dependencyManagement>
      • 请注意,它的 typepomscopeimport,这种类型的 dependency 只能在 dependencyManagement 标签中声明,然后,把我们项目中的 子项目 中,parent 的声明,修改为我们自己项目的parent 项目就可以了,比如,我的是:

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
                  <parent>
        <groupId>com.songsy</groupId>
        <artifactId>spring-cloud-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        </parent>
        ```
        * 然后新增一个启动类及配置文件`application.properties`就完成了一个`Boot`项目的构建
        ```java
        @SpringBootApplication
        public class SampleTomcatJspApplication extends SpringBootServletInitializer {

        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SampleTomcatJspApplication.class);
        }

        public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleTomcatJspApplication.class, args);
        }

        }

不同环境不同配置文件

  1. 针对各环境新建不同的配置文件 application-dev.properties、application-test.properties、application-prod.properties , 在这三个文件均都设置不同的server.port属性,如:dev环境设置为8080test环境设置为9090prod环境设置为80

  2. application.properties中设置spring.profiles.active=dev,就是说默认以dev环境设置

  3. 采用命令行的形式

    1
    2
    3
    4
    5
    执行java -jar xxx.jar,可以观察到服务端口被设置为8080,也就是默认的开发环境(dev)

    执行java -jar xxx.jar --spring.profiles.active=test,可以观察到服务端口被设置为9090,也就是测试环境的配置(test)

    执行java -jar xxx.jar --spring.profiles.active=prod,可以观察到服务端口被设置为80,也就是生产环境的配置(prod)

打包 Spring Boot 项目

  • 引入 spring-boot-maven-plugin 插件,执行 mvn clean package 命令,将 Spring Boot 项目打成一个 Fat Jar 。后续,我们就可以直接使用 java -jar 运行。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
</plugin>
</plugins>
</build>

数据文件的加载顺序

  1. 在命令行中传入的参数
  2. SPRING_APPLICATION_JSON: 以JSON格式配置在系统环境变量中的内容
  3. java:comp/env 的JNDI属性
  4. Java的系统属性,可以通过System.getProperties()
  5. 操作系统的环境变量
  6. 通过 random.* 配置的随机属性
  7. 位当前jar之外,针对不同{profile}环境的配置文件内容, application-{profile}.yml
  8. 位当前jar之内,针对不同{profile}环境的配置文件内容, application-{profile}.yml
  9. 位当前jar之外,application.yml
  10. 位当前jar之内,application.yml

总结

参考