1. 程式人生 > >Spring Boot打Jar包部署

Spring Boot打Jar包部署

對於傳統的Web專案,可能大部分都要部署到web容器中,如Tomcat。Spring Boot提供了一種超級簡單的部署方式,就是直接將應用打成jar包,在生產上只需要執行java -jar就可以運行了。

一般情況下,如果我們的應用只是作為一個服務、工具類、API的形式存在,那麼我們一般將其打包成jar包。而如果我們的應用是一個Web應用,都是打成war包,進行釋出,同時如果我們的伺服器是Tomcat等輕量級伺服器,一般都打成war包進行釋出;

我們在Spring Boot整合Mybatis例項一文中已經描述過如何整合Spring Boot和Mybatis,本文我們在上文的基礎上來看一下如何將Spring Boot專案打成Jar包並部署執行。專案結構如下:


這裡寫圖片描述

首先我們需要開發一個控制器來接受我們的Http請求並在瀏覽器上顯示對應的訊息。所以我們先定義一個服務介面BlogService,該介面只有一個方法,即獲取資料列表:
public interface BlogService  {
    List<BlogType> queryBlogType();
}

我們再定義一個介面的實現類,名為BlogServiceIml,該類實現BlogService介面,具體如下:

@Service
public class BlogServiceIml implements BlogService {
    @Autowired
private BlogTypeMapper blogTypeMapper; /** * 獲取列表 * @return */ @Override public List<BlogType> queryBlogType() { return blogTypeMapper.getAll(); } }

注意,定義一個服務類時一定要加上@Service註解。

接下來我們定義一個控制器(Controller),該控制器接受一個請求並以Json的格式返回資料。

@RestController
@RequestMapping
(value="/api/blog") public class BlogController { @Autowired private BlogService blogService; @RequestMapping(value="/blogTypes") public List<BlogType> blogTypes(HttpServletRequest request, HttpServletResponse response){ return blogService.queryBlogType(); } }

準備工作就緒,接下來我們開始打包。
第一步:我們需要在pom.xml新增spring-boot-maven-plugin

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

第二步,儲存pom.xml,進入pom.xml所在的目錄,執行mvn clean package -Dmaven.test.skip=true命令打包。

F:\MyProject\IntelliJ\mybatisxml>mvn clean package -Dmaven.test.skip=true
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building mybatisxml 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ mybatisxml ---
[INFO] Deleting F:\MyProject\IntelliJ\mybatisxml\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mybatisxml ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mybatisxml ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 6 source files to F:\MyProject\IntelliJ\mybatisxml\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ mybatisxml ---
[INFO] Not copying test resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mybatisxml ---
[INFO] Not compiling test sources
[INFO]
[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ mybatisxml ---
[INFO] Tests are skipped.
[INFO]
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ mybatisxml ---
[INFO] Building jar: F:\MyProject\IntelliJ\mybatisxml\target\mybatisxml-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.5.9.RELEASE:repackage (default) @ mybatisxml ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.768 s
[INFO] Finished at: 2018-04-12T12:09:31+08:00
[INFO] Final Memory: 33M/220M
[INFO] ------------------------------------------------------------------------

第三步,打包完成,進入Target目錄,使用java -jar命令,執行應用

F:\MyProject\IntelliJ\mybatisxml>cd target

F:\MyProject\IntelliJ\mybatisxml\target>java -jar mybatisxml-0.0.1-SNAPSHOT.jar
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.9.RELEASE)

2018-04-12 12:11:59.946  INFO 8220 --- [           main] c.l.mybatisxml.MybatisxmlApplication     : Starting MybatisxmlApplication v0.0.1-SNAPSHOT on user-PC with PID 8220 (F:\MyProject\IntelliJ\mybatisxml\target\mybatisxml-0.0.1-SNAPSHOT.jar started by user in F:\MyProject\IntelliJ\mybatisxml\target)
2018-04-12 12:11:59.956  INFO 8220 --- [           main] c.l.mybatisxml.MybatisxmlApplication     : No active profile set, falling back to default profiles: default
2018-04-12 12:12:00.596  INFO 8220 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot[email protected]69663380: startup date [Thu Apr 12 12:12:00 CST 2018]; root of context hierarchy
2018-04-12 12:12:03.192  INFO 8220 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2018-04-12 12:12:03.222  INFO 8220 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2018-04-12 12:12:03.222  INFO 8220 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.23
2018-04-12 12:12:03.372  INFO 8220 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2018-04-12 12:12:03.372  INFO 8220 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2776 ms
2018-04-12 12:12:03.642  INFO 8220 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2018-04-12 12:12:03.652  INFO 8220 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-04-12 12:12:03.652  INFO 8220 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-04-12 12:12:03.652  INFO 8220 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-04-12 12:12:03.652  INFO 8220 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2018-04-12 12:12:04.860  INFO 8220 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot[email protected]69663380: startup date [Thu Apr 12 12:12:00 CST 2018]; root of context hierarchy
2018-04-12 12:12:05.000  INFO 8220 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/blog/blogTypes]}" onto public java.util.List<com.learningspringboot.mybatisxml.entity.BlogType> com.learningspringboot.mybatisxml.ronRestApi.BlogController.blogTypes(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-04-12 12:12:05.000  INFO 8220 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-04-12 12:12:05.010  INFO 8220 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-04-12 12:12:05.090  INFO 8220 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-04-12 12:12:05.097  INFO 8220 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-04-12 12:12:05.165  INFO 8220 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-04-12 12:12:05.225  WARN 8220 --- [           main] .t.AbstractTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration)
2018-04-12 12:12:06.233  INFO 8220 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2018-04-12 12:12:06.369  INFO 8220 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2018-04-12 12:12:06.382  INFO 8220 --- [           main] c.l.mybatisxml.MybatisxmlApplication     : Started MybatisxmlApplication in 7.126 seconds (JVM running for 7.786)

這裡寫圖片描述

本文原始碼見:https://download.csdn.net/download/zyhlwzy/10343462

相關推薦

Spring BootJar部署

對於傳統的Web專案,可能大部分都要部署到web容器中,如Tomcat。Spring Boot提供了一種超級簡單的部署方式,就是直接將應用打成jar包,在生產上只需要執行java -jar就可以運行了。 一般情況下,如果我們的應用只是作為一個服務、工具類、AP

spring bootjarwar的區別作用以及需要的改動

spring boot打jar包和打war包的區別作用 此文為轉載:http://mrlee23.iteye.com/blog/2047968   在開發除錯完成之後,可以將應用打

spring boot jar,獲取resource路徑下的檔案

前言:最近在spring boot專案靜態類中獲取resource路徑下檔案,在idea中啟動都可以獲取,但是打包後變成了jar包 就無法獲取到。我想到了兩種方法,一種是根據http訪問靜態資源比如     localhost:9080/static/template/xxx.ftl檔案。另外一種是根據流獲

spring bootjarwar的區別

spring boot既可以打成war釋出,也可以找成jar包釋出。說一下區別 jar包:直接通過內建tomcat執行,不需要額外安裝tomcat。如需修改內建tomcat的配置,只需要在spring boot的配置檔案中配置。內建tomcat沒有自己的日誌輸

spring bootjar釋出

artifactId 是即將打包的包的名稱 version 是即將打包的版本號packaging 是即將打包的格式,這裡講的是jar包 終端輸入命令: mvn clean install   然後在target下檢視生成的對應的jar包檔案   如何執行呢? 找到一個

spring bootjar發布

log get window 詳細說明 pre 命令行 默認 java 即將 artifactId 是即將打包的包的名稱 version 是即將打包的版本號packaging 是即將打包的格式,這裏講的是jar包 終端輸入命令: mvn clean install

Spring Bootjar執行,引用外部jar

剛遇到這個問題的時候,一臉懵逼,已經打好jar包在伺服器上執行,訪問介面的時候卻提示java.lang.NoClassDefFoundError。後來發現是因為引用了一個語音合成的jar包,這個jar包不是通過maven引入的事直接add Jar新增的,所以在打包執行的時候讀

Spring-bootwar部署到tomcat

1、maven專案,修改pom包將<packaging>jar</packaging> 改為<packaging>war</packaging> 2、打包時排除tomcat.<dependency> <g

Spring Bootjar時指定main方法入口

org.springframework.bootspring-boot-maven-pluginorg.springframework.bootspring-boot-maven-plugincom

Spring Boot jar 無法響應jsp 問題

<!--增加jsp依賴 -->          <dependency>             <groupId>org.apache.tomcat.embed</groupId>             <

關於Spring bootwar部署在tomcat上的一個問題

     由於軟體工程的實踐,我們組需要用JAVA寫一個專案,就試著用Spring boot 寫了一個課程表的後臺,展示是在安卓端。框架由於我原來習慣在PHP下直接寫SQL,就選用了比較契合的MYBaits,照著官網的demo,做了一個RESTFUL風格的後臺處理。    

spring boot專案jar部署

       經過以下步驟, 最終會形成maven依賴的多個jar(包括lib下新增的)、 我們編寫的程式程式碼打成一個jar, 將程式jar與 依賴jar分開,便於管理:

linux測試環境,部署spring boot打的jar,簡易偷懶腳本

head 新的 lena fin abs sta log linux nbsp 當前已有jar在運行,上傳新jar之後,需要刪除舊的,執行新的,一不小心可能就把新的刪了,就寫了個腳本,做下記錄 #!/bin/bash path=/work/server/ fileH

Spring Boot 本地jar

install 可能 絕對路徑 空格 還需要 直接 color 常用 mvn 一:問題場景 在開發過程中,我們有時會遇到Maven中央庫沒有的jar包,比如公司自己開發的而又沒有放入公司私庫的jar包,這時就不能通過三圍在pom中直接引入。那麽怎麽在項目中引入這些本

Spring Boot war 的步驟

clas mis pid ali onf main `` ilo ng- ## Spring Boot 打 war 包的步驟 1. 添加 spring-boot-start-tomcat 的 provided 依賴 ``` <depend

Springboot學習09 :JAR部署,包含jsp資源,防止jsp404

一、注入依賴 1、設定專案打包為jar: <groupId>com.dahao</groupId> <artifactId>dingshi</artifactId> <packaging>jar</pa

Spring boot 讀取jar中resources下的檔案

package com.jiankunking.elasticsearch.extension.util; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core

SpringBoot jar部署

環境:Spring Tool Suite、SpringBoot 2.0.4、Maven、Linux 步驟: 1、在工程上右鍵,Run As ->Maven clean,清理工程。 2、在工程上右鍵,Run As -> Maven install,即可得到

springbootjar部署

最近在做springboot的專案,發現springboot部署的方式還是比較特別的。 因為springboot 內建了tomcat,所以我們只要把它打成jar包即可執行。 下面就說一說jar包執行的方式: 1.單模組專案打包: pom.xml檔案里加入spring-

spring boot 用war部署到tomcat下詳細教程(解決缺少web.xml報錯的問題)

1.首先 修改pom.xml下的打包方式 <packaging>war</packaging> 2.新增servlet-api依賴 <!--新增servlet-api的依賴--> <dependency> <gr