Spring boot web如何部署到服务器上

        Spring boot 不像其它巨石的web工程,其本质上是一个 Java 应用程序,那么又如何部署呢? 
通常来说,Springboot 部署会采用两种方式:全部打包成一个jar,或者打包成一个war。

 

以前普通的web工程是这样打成war包的

Spring boot web如何部署到服务器上_第1张图片

直接导出.war 放置到服务器tomcat目录下面

Spring boot web如何部署到服务器上_第2张图片

 当然也有其它的容器

 

这里讲讲Spring boot的两种打包方式

          1.jar的打包方式

                 都知到Spring boot是由main方法,而且是程序启动的入口,我们如果是直接打包成jar文件

  则一定会出现找不到main入口的情况

             解决办法

          加入一下代码便可以直接在idea里面打包了

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

Spring boot web如何部署到服务器上_第3张图片可以通过这种方式直接打包    执行一遍clean  然后执行package就好了,install也可以弄到私有库

 

    示例:

           Spring boot web如何部署到服务器上_第4张图片

就拿这个工程来示例,

    application.yml

server:
  port: 9999

         

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

@SpringBootApplication
public class JumApplication {

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

}

 

User.java
package com.jum.controller;

public class User {               //当然也可以使用Lombok来实现get  set 构造,这里简单写
    private String id;
    private String name;

    public User(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

IndexController.java
package com.jum.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.LinkedList;
import java.util.List;

@Controller
public class IndexController {
   private static List users = new LinkedList<>();
    static {
       User user = new User("123456","张大毛");
       User user2 = new User("654321","张二毛");
       User user3 = new User("456789","张三毛");
       User user4 = new User("987654","张小毛");
       users.add(user);
       users.add(user2);
       users.add(user3);
       users.add(user4);
    }
    @RequestMapping(value = "/user", method = RequestMethod.GET)
    public String index(Model model, @RequestParam("id") String param1) {
        users.stream().filter(member -> {
            if (param1.equals(member.getId())){
                model.addAttribute("name", member.getName());
            }
            return param1.equals(member.getId());
        }).findAny();

        return "index";
    }
}

pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.8.RELEASE
         
    
    com.jum
    jum
    0.0.1-SNAPSHOT
    jum
    Demo project for Spring Boot

    
        1.8
    

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

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
        
            
                src/main/resources
                
                    **/*.*
                
            
        
    


如此就完工了

 

Spring boot web如何部署到服务器上_第5张图片

 这个便是可执行的jar文件

我将我这个jar文件拷贝到了自己的D:\A 目录下

Spring boot web如何部署到服务器上_第6张图片

Spring boot web如何部署到服务器上_第7张图片

 

如此便可正常运行了,当然linux也是一样

nohup java -Dfile.encoding=UTF-8 -jar jum-0.0.1-SNAPSHOT.jar &                这个为不挂断执行

 

     2.打war方式

主要修改 把pom.xml  

    加入

war





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


spring-boot-starter-tomcat修改为 provided,以避免和独立 tomcat 容器的冲突. 
表示只在编译和测试的时候使用,打包的时候它就不参与了。


 如下:



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.8.RELEASE
         
    
    com.jum
    jum
    0.0.1-SNAPSHOT
    jum
    war
    Demo project for Spring Boot

    
        1.8
    

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

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
        
            
                src/main/resources
                
                    **/*.*
                
            
        
    


然后需要新加@ServletComponentScan注解,并且继承SpringBootServletInitializer 。

打包成war包,则需要继承 org.springframework.boot.context.web.SpringBootServletInitializer类,覆盖其config(SpringApplicationBuilder)方法

package com.jum;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
@ServletComponentScan
public class JumApplication extends SpringBootServletInitializer {

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

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

}

 Spring boot web如何部署到服务器上_第8张图片

我则把自己打的war放置如上目录下,编译之后会出现jum-0.0.1-SNAPSHOT文件夹,它会使用外部的tomcat所以端口号为外部tomcat的端口号

Spring boot web如何部署到服务器上_第9张图片

你可能感兴趣的:(Spring,boot,2.x入门到深入)