Spring Boot初学者要知道的干货

北京时间 2018 年 3 月 1 日早上,在经历了一番波折之后,Spring Boot 2.0.0发布了,这对于每一个java web开发者来说,都是值得欣喜的事情

Spring Boot的出现,无意对于像我这样热衷于前后端分离开发的人来说,是一件值得欣喜的事情。也结束了我每一次在搭建项目环境时,对于配置文件的重复编写

更觉得自己应该开始记录自己在使用Spring Boot过程中的点点滴滴

环境搭建

创建maven项目,在pom.xml中添加依赖

  1. 首先要继承spring-boot

    org.springframework.boot
    spring-boot-starter-parent
    2.0.0.RELEASE

2.添加依赖


    org.springframework.boot
    spring-boot-starter-web

由于我们在继承的时候已经指定了版本,所以这里就不需要版本了

3.编写启动类

package com.funshion;

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

@SpringBootApplication
public class App 
{
    public static void main( String[] args )
    {
            SpringApplication.run(App.class, args);
    }
}


执行App类的main方法,我们就启动了web项目,一个java-web项目

搭建配置简单

java-web开发,搭建环境最重要的就是要添加我们需要的第三方依赖库,在传统的项目搭建中,我们要依赖一大堆的spring库,但是spring-boot为我们减少了一些繁琐无用的依赖配置,世界顿时清净了!

内置软件服务

spring-boot内嵌了tomcat服务,我们执行了App类的main,就启动了Tomcat,默认监听8080端口

接下来的开发就跟我们原来使用spring开发一样了,各种daoservicecontroller分层结构开始使用了

项目编译打包

在开发完成后,我们需要将项目代码编译打包,然后部署到服务器上,对于spring-boot项目的打包,我们需要对其做一些配置
1.配置打包插件


    org.springframework.boot
    spring-boot-maven-plugin

如果没有这个插件,打包的后jar文件在启动时,会找不到启动类

2.打包war文件,要代码中指定servlet的初始化

package com.funshion.common.config;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

import com.funshion.App;

public class ServletInitializer extends SpringBootServletInitializer{

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(App.class);
    }
}

环境自动切换

在项目或产品从开发、内测、公测、发布的过程中,总是免不了要发生服务器环境的变化,或者一些参数要进行变化,如

  • 数据库相关信息不同
  • 日志级别不同
  • 文件路径不同
  • 与其他系统交互的接口地址不同
  • ……

所以需要我们做一些非常有用,但是却没有多少价值的工作

然而spring-boot为我们带来了环境切换的功能

假如我们需要配置4个环境

  • dev 开发环境
  • test 内测环境
  • beta 公测环境
  • prod 生产环境
  1. src/main/resources目录创建application.ymlapplication-dev.ymlapplication-test.ymlapplication-beta.ymlapplication-prod.yml五个spring-boot配置文件

  2. 将不同环境的配置信息,写入到相应环境的配置文件中

  3. application.yml中进行设定

spring:
  profiles:
    active:
    - dev

我们只需要指定active的值就可以

在运行jar文件时指定

当我们使用mvn package命令后,就能将该项目编译打包成一个jar文件,在命令行中执行

java -jar app.jar --spring.profile.active=prod

在项目启动后就会自动切换到想要的环境下

部署war文件如何指定

上述说的是在打包成jar文件后,使用命令行启动,来达到环境自动切换的效果,可是按照我们已有的习惯,我们更愿意在服务器上部署好tomcat,然后将项目编程打包成war文件,然后部署到tomcat的webapps目录下,然后启动tomcat,访问我们的应用

想要在打包war文件时指定环境的变量,就需要跟maven组合在一起使用了

  1. 在pom.xml中定义不同环境的变量

    
    
        dev
        
        
            dev
        
        
        
            
                org.springframework.boot
                spring-boot-devtools
                true
            
        
    
    
    
        prod
        
            true
        
        
            prod
        
    
    
    
        test
        
            test
        
    
    
    
        beta
        
            beta
        
    

  1. 使用maven-resources-plugin插件将变量写入到文件中

    org.apache.maven.plugins
    maven-resources-plugin
    
        
            default-resources
            validate
            
                copy-resources
            
            
                target/classes
                true
                
                    ${*}
                
                
                    
                        src/main/resources/
                        true
                        
                            **/*.xml
                            **/*.yml
                        
                    
                    
                        src/main/resources/
                        false
                        
                            **/*.xml
                            **/*.yml
                        
                    
                
            
        
    

  1. 修改application.yml中的配置

spring:
  profiles:
    active:
    - ${spring.profiles.active}

4.在打包命令中指定环境变量

mvn package -P prod

war文件部署需要注意的问题

spring-boot内嵌了tomcat,所以在使用war文件部署时,在编译打包的时候,就不能把tomcat相关的东西打包进去,需要修改一些配置


    org.springframework.boot
    spring-boot-starter-web
    
        
            org.springframework.boot
            spring-boot-starter-tomcat
        
    


    org.springframework.boot
    spring-boot-starter-tomcat
    provided

上述内容都是我在使用spring-boot的过程中遇到的,分享出来,大家共同进步!

你可能感兴趣的:(Spring Boot初学者要知道的干货)