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 Boot打Jar包部署
對於傳統的Web專案,可能大部分都要部署到web容器中,如Tomcat。Spring Boot提供了一種超級簡單的部署方式,就是直接將應用打成jar包,在生產上只需要執行java -jar就可以運行了。 一般情況下,如果我們的應用只是作為一個服務、工具類、AP
spring boot打jar包和打war包的區別作用以及需要的改動
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 boot打jar包和打war包的區別
spring boot既可以打成war釋出,也可以找成jar包釋出。說一下區別 jar包:直接通過內建tomcat執行,不需要額外安裝tomcat。如需修改內建tomcat的配置,只需要在spring boot的配置檔案中配置。內建tomcat沒有自己的日誌輸
spring boot打jar包釋出
artifactId 是即將打包的包的名稱 version 是即將打包的版本號packaging 是即將打包的格式,這裡講的是jar包 終端輸入命令: mvn clean install 然後在target下檢視生成的對應的jar包檔案 如何執行呢? 找到一個
spring boot打jar包發布
log get window 詳細說明 pre 命令行 默認 java 即將 artifactId 是即將打包的包的名稱 version 是即將打包的版本號packaging 是即將打包的格式,這裏講的是jar包 終端輸入命令: mvn clean install
Spring Boot打jar包執行,引用外部jar包
剛遇到這個問題的時候,一臉懵逼,已經打好jar包在伺服器上執行,訪問介面的時候卻提示java.lang.NoClassDefFoundError。後來發現是因為引用了一個語音合成的jar包,這個jar包不是通過maven引入的事直接add Jar新增的,所以在打包執行的時候讀
Spring-boot打war包部署到tomcat
1、maven專案,修改pom包將<packaging>jar</packaging> 改為<packaging>war</packaging> 2、打包時排除tomcat.<dependency> <g
Spring Boot打jar包時指定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 boot打war包部署在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,即可得到
springboot打jar包部署
最近在做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