idea ssm打war包_IDEA下從零開始搭建SpringBoot工程

SpringBoot的具體介紹可以參看其他網上介紹,這里就不多說了,就這幾天的學習,個人理解,簡而言之:
如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。
(1)它是Spring的升級版,Spring容器能做到的事情,它都能做到,而且更簡便,從配置形式上來說,SpringBoot完全拋棄了繁瑣的XML文件配置方式,而是替代性地用注解方式來實現,雖然本質來說,是差不多的(類似包掃描,注解掃描,類加載之類)。
(2)SpringBoot集成的插件更多,從而使用很多服務,都只是引入一個依賴,幾個注解和Java類就可以用了,具體的參考相關手冊。
(3)在Web應用開發這一塊,之前的應用一般來說是打包成war包,再發布到相關服務器容器下(例如Tomcat),雖然SpringBoot也可以這么做,但在SpringBoot下更常見的形式是將SpringBoot應用打包成可執行jar包文件。之所以這么做,源于你可以直接將SpringBoot應用看成是一個Java Application,其Web應用可以沒有webapp目錄(更不用說web.xml了),它推薦使用html頁面,并將其作為靜態資源使用。
下面具體記錄一下,如何在IDEA下從零開始,一步步搭建SpringBoot Web應用,這里采用的是maven作依賴管理,新手起步,有任何疑問,請參考SpringBoot官網。
需要說明的是SpringBoot依賴的JDK版本為1.8及以上。
(1)File->new,選擇maven,創建一個空項目,直接next.

fb93b8370c4a154a9d8770a05d611286.png


(2)填寫工程名

bf4a7b3578a112ad74c8861f491088e2.png


(3)next到底,成果創建一個基于maven的空Java項目,其目錄結構是這樣的:

5a2fda24c7be8af7a46b7a879a7570bc.png


如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。
(4)在pom文件中引入SpringBoot相關依賴
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
(5)新建一個controller 包,用于存放所有的controller,這里跟官方的一樣,使用SampleController為第一個測試用例。代碼如下:/** * Created by Song on 2017/2/15. * 官方示例工程中的測試代碼 */ @Controller @EnableAutoConfiguration public class SampleController { @RequestMapping("/") @ResponseBody String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(SampleController.class, args); } }
注意到,這里有一個main函數,再聯想到前面說的,SpringBoot應用一般是打包成可執行jar包來發布的,這個main函數就是整個項目的入口。而之所以能這么做,是因為SpringBoot連Tomcat8作為一個插件都集成進去了,所以就不必跟之前的SSM架構下一樣,還需要去在Tomcat下配置war包才能運行。直接點擊運行該main函數,再瀏覽器鏈接欄,輸入地址http://localhost:8080/,就可以看到打印的字符串”Hello World!”了。這就是官網提供的一個最基本的基于SpringBoot的Web應用,如此便捷。
當然,一個基本的Web應用,結構肯定不會這么簡單。下面要說的是,如何在上面的基礎上,搭建一個具有MVC結構的完整的Web應用,其中數據庫采用的是Mysql,ORM采用的是Spring Data JPA,前端頁面采用js+html5。(當然還有其他的方式,例如ORM框架采用mybatis等,本文暫未涉及。)
(6)在resource目錄下新建一個application.properties文件(或yml文件),命名與位置為SpringBoot默認的配置文件。在該文件中,記錄著所有的模塊配置內容。例如Tomcat的端口(默認8080)以及編碼方式等:
server.port=8080 server.tomcat.uri-encoding=utf-8
(7)引入本項目中所需要的相關依賴(MySQL連接驅動 以及Spring Data JPA,thymeleaf模板引擎)<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <version>1.4.0.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>1.5.1.RELEASE</version> </dependency>
(8)在application.properties中配置MySQL數據庫連接信息
這里的數據庫為本地數據庫test,用戶名和密碼改成自己的#MySQL spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8 spring.datasource.username=**** spring.datasource.password=****
(9)在application.properties中配置Spring Data JPA
這一段的意思就是說,數據庫類型為MYSQL,日志信息打印具體執行的sql語句,表更新策略以及Java類到數據庫表字段的映射規則等,具體查看網絡資料。#Spring Data JPA spring.jpa.database=MYSQL spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update # Naming strategy spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy # stripped before adding them to the entity manager) spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
(10)編寫一個實體類User
@Table標簽,指定數據庫中對應的表名,id配置為主鍵,生成策略為自動生成/** * Created by Song on 2017/2/15. * Model 用戶 */ @Entity @Table(name = "tbl_user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; private String password; }
(11)基于JPA,實現DAO層(即數據庫數據的增刪改查操作)
新建UserRepositoty.java接口文件,源代碼如下:/** * Created by Song on 2017/2/15. * User表操作接口 */ @Repository public interface UserRepositoty extends JpaRepository<User,Long>{ @Query("select t from User t where t.name = :name") User findByUserName(@Param("name") String name); }
需要解釋的是,Spring Data JPA提供了很多持久層接口,例如Repository,CrudRepositoty,PagingAndSortingRepository 以及JpaRepository 接口。其中Repository為基類,JpaRepository繼承自PagingAndSortingRepository接口,兩個泛型參數分別代表Java POJO類以及主鍵數據類型。我們創建自己的數據庫操作接口時,只需繼承上述JPA提供的某個接口,即可自動繼承相關數據操作方法,而不需要再次實現。例如CrudRepositoty提供了對增刪改查操作的實現,PagingAndSortingRepository提供了分頁查詢方法的實現。另外JPA提供了一套命名規則例如readBy**()等,這些方法也只需要用戶申明而由JPA自動實現了。如果這仍不能滿足業務需求,也可以自定義SQL查詢語句,例如上述代碼所示,采用@Query標簽, 其中 :*語法為引用下面用@Param標識的變量,需要注意的是其中User不是表面而是Java POJO類名。具體使用參考JPA使用手冊。
(12)設計Service層業務代碼
新建UserService類,其源代碼如下:/** * Created by Song on 2017/2/15. * User業務邏輯 */ @Service public class UserService { @Autowired private UserRepositoty userRepositoty; public User findUserByName(String name){ User user = ; try{ user = userRepositoty.findByUserName(name); }catch (Exception e){} return user; } }
(13)設計Controller層
新建UserController.java,提供兩個接口,/user/index 返回頁面,/user/show返回數據。其源代碼如下:/** * Created by Song on 2017/2/15. * User控制層 */ @Controller @RequestMapping(value = "/user") public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/index") public String index(){ return "user/index"; } @RequestMapping(value = "/show") @ResponseBody public String show(@RequestParam(value = "name")String name){ User user = userService.findUserByName(name); if( != user) return user.getId()+"/"+user.getName()+"/"+user.getPassword(); else return "null"; } }
如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。
(14)在application.properties文件中配置頁面引擎。這里采用SpringMVC(SpringBoot還提供thymeleaf,freemaker等)。這里需要配置其靜態資源(js、css文件、圖片文件等)路徑,以及html頁面文件路徑,參考SpringMVC在Spring下的配置。
#視圖層控制
spring.mvc.view.prefix=classpath:/templates/ spring.mvc.view.suffix=.html spring.mvc.static-path-pattern=/static/**
(15)在resource目錄下新建templates以及static目錄,分別用于存放html文件以及(js、css文件、圖片)文件。在(13)中返回了一個“user/index”頁面,所以在templates下新建user目錄,在user目錄下新建index.html頁面,這里就不寫什么了,默認頁面,通過相對路徑引入js文件,js文件里只做示意,彈出一個alert()。
user/index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <script src="../static/scripts/jquery.min.js"></script> <script src="../static/scripts/test.js"></script> <title>Title</title> </head> <h1>TEST PAGE</h1> <body> </body> </html>
static/scripts/test.js $(document).ready(function (){ alert("OK TEST"); });
(16)配置JPA
新建一個configuration包,用于存放項目配置類。類似SSM架構下,spring需要配置Java POJO類包路徑以及DAO層接口路徑,以自動掃描相關注解,這里同樣需要配置這兩項,不同的是Spring采取的是xml配置方式,這里用Java代碼+注解方式配置。新建一個JpaConfiguration.java類,其代碼如下:/** * Created by Song on 2017/2/15. * JPA 配置類 */ @Order(Ordered.HIGHEST_PRECEDENCE) @Configuration @EnableTransactionManagement(proxyTargetClass = true) @EnableJpaRepositories(basePackages = "com.song.repository") @EntityScan(basePackages = "com.song.entity") public class JpaConfiguration { @Bean PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){ return new PersistenceExceptionTranslationPostProcessor(); } }
(17)配置項目啟動入口
到這一步就可以刪掉(5)中官方示例給出的SampleController.java了,由于我們的工程結構已經發生了改變,我們需要告訴SpringBoot框架去掃描哪些包從而加載對應類,所以這里重新編寫main函數。新建一個Entry.java類,其代碼如下(其中@SpringBootApplication是一個復合注解,就理解為自動配置吧):/** * Created by Song on 2017/2/15. * 項目啟動入口,配置包根路徑 */ @SpringBootApplication @ComponentScan(basePackages = "com.song") public class Entry { public static void main(String[] args) throws Exception { SpringApplication.run(Entry.class, args); } }
(18)運行main函數,訪問http://localhost:8080/user/index 會顯示測試頁面,并彈出alert(),訪問http://localhost:8080/user/show?name=**(數據表里存在的數據)會顯示user信息。最終的工程文件結構如下:

bfc14f7ca4f2198e7faf2fa4ffa6ab6e.png


歡迎工作一到八年的Java工程師朋友們加入Java高級交流:854630135
本群提供免費的學習指導 架構資料 以及免費的解答
不懂得問題都可以在本群提出來 之后還會有直播平臺和講師直接交流噢

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397865.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397865.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397865.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c語言一維數組轉化為二維矩陣,js將一維數組轉化為二維數組

遇到的問題&#xff1a;后端返回的是一組一維數組&#xff0c;但是需要展示的格式是二維數組&#xff0c;常見的場景舉例&#xff1a;后臺返回10個長度的數組&#xff0c;需要分成3個一組展示在banner上。例&#xff1a;[1,2,3,4,5,6,7,8,9,10] > [[1,2,3], [4,5,6], [7,8…

nano使用說明

Main nano help text The nano editor is designed to emulate 仿真、模擬 the functionality and ease-of-use of the UW Pico text editor. There are four main sections of the editor. The top line shows the program version, the current filename being edited, and w…

dataframe 眾數的方法_學習數據分析數據方法論 [描述性統計分析]

數理統計&#xff1a;數理統計是以概率論為基礎&#xff0c;研究社會和自然界中大量隨機現象數量變化基本規律的一種方法。分為&#xff1a;描述統計(描述統計的任務是搜集資料&#xff0c;進行整理、分組&#xff0c;編制次數分配表&#xff0c;繪制次數分配曲線&#xff0c;計…

c語言高級語言期中測試答案,上海理工大學C語言2011期中試題和答案

C語言2010/2011學年 第二學期 期中測試高級語言程序設計(C)試卷 A □BA1. 輸入一行字符&#xff0c;統計其中的英文字母個數。#include void main(){ char ch;int n0;printf(“Input a string:\n”);while(1){ chgetchar();if (ch \n ) break;if (ch> a && ch< z…

前端基礎進階(十):面向對象實戰之封裝拖拽對象

https://segmentfault.com/a/1190000012646488 https://yangbo5207.github.io/wutongluo/ 說明&#xff1a;此處只是記錄閱讀前端基礎進階的理解和總結&#xff0c;如有需要請閱讀上面的鏈接 1.如何讓元素動起來 要讓元素動起來就要修改元素的top、left 、translate 屬性。因為…

iOS - LocalCache 本地數據緩存

1、自定義方式本地數據緩存 1.1 自定義緩存 1 沙盒路徑下的 Library/Caches 用來存放緩存文件&#xff0c;保存從網絡下載的請求數據&#xff0c;后續仍然需要繼續使用的文件&#xff0c;例如網絡下載的離線數據&#xff0c;圖片&#xff0c;視頻文件等。該目錄中的文件系統不會…

如何構建ASP.NET MVC4JQueryAJaxJSon示例

背景&#xff1a; 博客中將構建一個小示例&#xff0c;用于演示在ASP.NET MVC4項目中&#xff0c;如何使用JQuery Ajax。 直接查看JSon部分 步驟&#xff1a; 1&#xff0c;添加控制器(HomeController)和動作方法(Index),并為Index動作方法添加視圖(Index.cshtml),視圖中HTML如…

echarts 有引導線和內部文字_點、線、面構圖的異同以及相互轉化

點、線、面構圖既有相似性&#xff0c;又有差異性。相似的是都有對齊、強調、群組、重復、突出層次的作用&#xff0c;不同的是點的特點是聚焦、線的特點是運動和方向性&#xff0c;面的特性是體量感、穩定性。點的情感最弱&#xff0c;線、面的情感要比點豐富。一、點、線、面…

c語言上機報告之水仙花數,C語言上機報告之水仙花數..doc

C語言上機報告之水仙花數.C語言程序設計上機報告課題名稱&#xff1a;水仙花數的算法院 (系)&#xff1a;工程學院專業班 級&#xff1a; 052126學生姓名&#xff1a; 喻培學 號&#xff1a; 20121004040指導教師&#xff1a; 熊慕舟2013年11月24日C語言上機報告之水仙花數上機…

《Python黑帽子:黑客與滲透測試編程之道》 Web攻擊

Web的套接字函數庫&#xff1a;urllib2 一開始以urllib2.py命名腳本&#xff0c;在Sublime Text中運行會出錯&#xff0c;糾錯后發現是重名了&#xff0c;改過來就好&#xff1a; #!/usr/bin/python #codingutf-8 import urllib2url "http://www.baidu.com"headers …

vCenter Converter Standalone使用文檔

文檔目的能夠使用vCenter Converter Standalone 將物理機操作系統遷移到虛擬機操作系統基礎知識vCenter Converter Standalone 能將物理機上的操作系統、VMware虛擬機上的操作系統或者Hype-V 上的虛擬機操作系統遷移到VMware上。系統環境操作系統&#xff1a;Windows Server 20…

1093芯片做正弦波逆變器_正弦波逆變器中的SPWM調制(鐘任生)

歡迎加入技術交流QQ群(2000人)&#xff1a;電力電子技術與新能源 905723370高可靠新能源行業頂尖自媒體在這里有電力電子、新能源干貨、行業發展趨勢分析、最新產品介紹、眾多技術達人與您分享經驗&#xff0c;歡迎關注我們&#xff0c;搜索微信公眾號&#xff1a;電力電子技術…

android 手機短信恢復,安卓手機短信刪除了怎么恢復?簡單恢復的方法

原標題&#xff1a;安卓手機短信刪除了怎么恢復&#xff1f;簡單恢復的方法安卓手機短信刪除了怎么恢復&#xff1f;手機短信是生活中不經常使用到&#xff0c;但是依然是十分重要的存在&#xff0c;因為我們現在比較喜歡用社交軟件與別人進行交流&#xff0c;但是在一些相對重…

Oracle-查看oracle是否有表被鎖

問題現象&#xff1a; 查看oracle是否有表被鎖 解決方法&#xff1a; select sid,serial#,program,terminal,username,b.object_id,c.object_name from v$session a, v$locked_object b, dba_objects c where a.sid b.session_id and b.object_id c.object_id;轉載于:http…

Python循環的一些基本練習

#1:# name input(請輸入你的身份)# if name egon:# print(--> 超級管理員)# elif name tom:# print(--> 普通管理員)# elif name jack,rain:# print(--> 業務主管)# elif name 其他:# print(--> 普通用戶)#2# today input(今天是星期幾&…

bash下個人習慣的一些文件設置

2019獨角獸企業重金招聘Python工程師標準>>> bash_profile export PATH/usr/local/bin:$PATH export EDITORviinputrc set editing-mode vi #set editing-mode emacs set show-all-if-ambiguous on set completion-ignore-case on set meta-flag on set conver…

docker打包鏡像上傳_Jenkins | 一鍵打包部署Spring Boot 應用的Docker鏡像

一、前言1、本文主要內容將在項目中實際使用到的相關東西整理記錄一波&#xff0c;同時可以方便其他同學在使用到的時候參考一下(自己也備忘)&#xff0c;有不對的地方&#xff0c;歡迎指出~~Docker部署SpringBoot 項目通用Dockerfile文件、腳本Jenkins新建任務圖文詳解3、本文…

android 發送短信 廣播 demo,向Android模擬器打電話發短信的簡單方法

在開發android應用程序時&#xff0c;有時候需要測試一下向android手機撥打電話發送短信時該應用程序的反應。譬如編寫一個廣播接收器&#xff0c;來提示用戶有短信收到或者處理短信&#xff0c;就需要向該手機發送短信來進行測試。這里介紹一種簡單的向android模擬器打電話發短…

android 隱藏鍵盤時ui延遲恢復,android 軟鍵盤的顯示與隱藏問題的研究

在android中&#xff0c;常常會和輸入法的軟件鍵盤交互。在Manifest文件中&#xff0c;系統給activity的一個屬性-windowSoftInputMode來控制輸入法的顯示方式。該屬性提供了Activity的window與軟鍵盤的window交互的方式。這里的屬性設置有雙方面的影響&#xff1a;1.軟鍵盤的顯…

天才基本法_《天才基本法》強推!年度神仙小說,看完這本書我竟然愛上了數學...

《天才基本法》——長洱小說文案元寶的書評這個真的是本年度的神仙小說&#xff0c;講述了女主回到少女時代&#xff0c;可以和他一直暗戀的數學天才重來一遍。女主讓男主改變了覺得她碌碌無為的看法&#xff0c;也改變了自己的人生。本書最大的主角其實是數學&#xff01;天知…