成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用maven創(chuàng)建簡(jiǎn)單的多模塊 Spring Web項(xiàng)目

DevYK / 790人閱讀

摘要:第一次寫技術(shù)文章,主要內(nèi)容是使用創(chuàng)建一個(gè)簡(jiǎn)單的項(xiàng)目,如有操作或理解錯(cuò)誤請(qǐng)務(wù)必指出,當(dāng)謙虛學(xué)習(xí)?;舅枷肫鋵?shí)就是一個(gè)項(xiàng)目引用別的模塊包,最終項(xiàng)目被打成包發(fā)布。

第一次寫技術(shù)文章,主要內(nèi)容是使用maven創(chuàng)建一個(gè)簡(jiǎn)單的SpringMVC WEB 項(xiàng)目,如有操作或理解錯(cuò)誤請(qǐng)務(wù)必指出,當(dāng)謙虛學(xué)習(xí)。
做這一次的工作主要是因?yàn)橄爰訌?qiáng)一下自己對(duì)Spring Web 項(xiàng)目的理解,因?yàn)槠綍r(shí)都是直接寫業(yè)務(wù)代碼,我覺得還是有必要自己了解一下創(chuàng)建項(xiàng)目的過程。后續(xù)會(huì)基于這個(gè)項(xiàng)目寫更多的SpringWeb開發(fā)過程,希望能幫助到有需要的人。

總的來說是一個(gè)相當(dāng)精簡(jiǎn)的多模塊springWeb項(xiàng)目搭建過程,讓我們進(jìn)入正題吧

我們知道單體應(yīng)用,就寫在一個(gè)project里面的話,業(yè)務(wù)一旦龐大起來非常難以管理。
把各個(gè)模塊多帶帶抽出來可以方便的對(duì)jar包進(jìn)行版本管理(盡管我還沒經(jīng)歷過這個(gè)),維護(hù)項(xiàng)目,團(tuán)隊(duì)開發(fā)也會(huì)方便許多。
基本思想其實(shí)就是一個(gè)java web項(xiàng)目引用別的模塊Jar包,最終web項(xiàng)目被打成war包發(fā)布。
**而所有的war包項(xiàng)目,jar包項(xiàng)目都是在同一個(gè)父模塊下管理的(它們都是Maven項(xiàng)目)**
(如果你有IDE,裝好插件就用IDE創(chuàng)建吧,我個(gè)人不喜歡手動(dòng)命令行創(chuàng)建)

1. 創(chuàng)建父項(xiàng)目

下圖中:框起來打勾這個(gè)會(huì)讓你跳過項(xiàng)目模式選擇,勾選對(duì)于創(chuàng)建項(xiàng)目沒有什么影響,以后也許會(huì)轉(zhuǎn)一下Maven這方面的文章

POM包才能做父項(xiàng)目,謹(jǐn)記?。。。。?/strong>

2. 子項(xiàng)目結(jié)構(gòu)和創(chuàng)建
以下是我的結(jié)構(gòu)分層,你也可以按你的想法來,最終目的是要方便自己開發(fā)。
test_parent    (父項(xiàng)目)
    |----test_web    (web項(xiàng)目)
    |----test_service    (業(yè)務(wù)內(nèi)容)
    |----test_framework    (工具,框架封裝、配置)
    |----test_dao    (數(shù)據(jù)持久層,DO也放這)
    |----test_controller    (處理映射)
    

創(chuàng)建子項(xiàng)目直接右鍵父項(xiàng)目然后新建maven module ,也就是子模塊

我們先創(chuàng)建web模塊,這里你可以勾選第一條然后創(chuàng)建簡(jiǎn)單項(xiàng)目,
如果沒有勾選,那么你要在下一步里選擇 maven-achetype-webapp,這里以簡(jiǎn)單項(xiàng)目為例子

Group Id 和 version 都是繼承父項(xiàng)目的
一定要選擇war包打包,不然要重新把他構(gòu)建成web項(xiàng)目。
如果你沒選war包:https://www.cnblogs.com/leonk...
最后點(diǎn)finish完成

點(diǎn)擊生成Web描述文件 (web.xml)

這樣就完成了Web模塊的創(chuàng)建,剩下的其他項(xiàng)目都是同樣的步驟創(chuàng)建,都是選擇jar包,參考下圖:

3. 配置各模塊的pom.xml
pom.xml記錄所需的jar包,模塊聯(lián)系,包信息,打包參數(shù)等等信息,在多模塊里我們要理清關(guān)系,不要重復(fù)引用
首先毫無疑問的是讓parent加載spring的jar包是最方便開發(fā)的,因?yàn)槟J(rèn)所有模塊都繼承parent,所以子模塊引用spring內(nèi)容也方便。
其次配置文件我們統(tǒng)一放在framework中進(jìn)行管理。
那么先來寫入web.xml配置吧


    test_web
    
    
        
        contextConfigLocation
        classpath*:spring-*.xml
    

    
        org.springframework.web.context.ContextLoaderListener
    

    
        spring
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            
            classpath*:spring-mvc.xml
        
        1
    
    
        spring
        /
    

    
        CharacterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
        
            forceEncoding
            true
        
    
    
        CharacterEncodingFilter
        /*
    

這里可以看到我們寫了classpath*,原因是它能搜索到項(xiàng)目目錄以外的Jar包下文件
相關(guān):http://www.cnblogs.com/wlgqo/...
web.xml詳解:https://blog.csdn.net/qq_3557...

web.xml是對(duì)WEB項(xiàng)目來說是必須的配置文件,寫好了spring配置文件的位置以后,就來新建2個(gè)spring配置文件,新建的配置放在test_framework模塊里,路徑如下圖
spring-context.xml spring-mvc.xml

一個(gè)是spring-context.xml 也叫applicationContext.xml,是webApp的上下文配置,也可以理解為配置dao、service 通用bean的地方,但我們這里使用的是注解掃描方式配置bean,所以就簡(jiǎn)單許多,即便有工具存在,寫改xml真的很討厭?。?/p>




    
    
    
    
    
        
        
    
    

這里要去掉對(duì)controller的掃描,applicationContext初始化的上下文加載的Bean是對(duì)于整個(gè)應(yīng)用程序共享的,不管是使用什么表現(xiàn)層技術(shù),一般如DAO層、Service層Bean;
DispatcherServlet (下一個(gè)要配置的東西) 初始化的上下文加載的Bean是只對(duì)Spring Web MVC有效的Bean,如Controller、HandlerMapping、HandlerAdapter等等,該初始化上下文應(yīng)該只加載Web相關(guān)組件。

context:component-scan 的 base-package 值用來決定我們需要掃描的包的基礎(chǔ)名,
具體配置相關(guān)可以看:https://www.cnblogs.com/exe19...

而context:annotation-config/ 呢?其實(shí)也是spring為了方便我們開發(fā)者給我們提供的一個(gè)自動(dòng)識(shí)別注解的配置,相關(guān)細(xì)節(jié)如下:
解釋說明:https://www.cnblogs.com/_popc...
兩條配置的區(qū)別和詮釋:https://www.cnblogs.com/leiOO...

下面是第二個(gè)配置文件 spring-mvc.xml




    
    
        
    

    
    
        
            
                
            
            
        
    

包掃描沒什么好說的,這里還強(qiáng)調(diào)include了注解controller。
mvc:annotation-driven 是spring默認(rèn)的注解驅(qū)動(dòng),這個(gè)配置項(xiàng)一口氣把一堆東西都給我們加進(jìn)來了,但主要還是針對(duì)controller和處理請(qǐng)求的,具體的在下面文章中,因?yàn)榧拥膬?nèi)容有點(diǎn)多,所以這個(gè)留到后面研究,稍微理解作用就好:
相關(guān)文章 : https://blog.csdn.net/vicroad...

mvc:message-converters 顧名思義,就是用于處理請(qǐng)求消息的,request content-header 會(huì)記錄請(qǐng)求的內(nèi)容類型,根據(jù)這些類型,spring會(huì)把內(nèi)容轉(zhuǎn)化成服務(wù)器操作的對(duì)象,這里的字符串轉(zhuǎn)化是為了避免亂碼,我們指定了編碼格式。
相關(guān)文章:https://www.jianshu.com/p/2f6...

以上,我們就已經(jīng)把最簡(jiǎn)約的配置寫好了。接下來我們隨便寫一個(gè)controller試試

4.寫個(gè)Controller吧
根據(jù)之前寫好的controller的掃描包名,去我們test_controller模塊里創(chuàng)建一個(gè)controller

package com.test.hello.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class HelloController
{
    @RequestMapping("/get")
    public String helloGet(@RequestParam String str) throws Exception
    {
        return str;
    }
}

很簡(jiǎn)單的一段返回請(qǐng)求字符串的代碼,現(xiàn)在一切就緒可以啟動(dòng)服務(wù)器了,配置好Tomcat就可以啟動(dòng)了,右鍵test_web --> run as --> run on server 選擇創(chuàng)建好的tomcat容器,就可以啟動(dòng)了。
接下來,訪問: localhost:8080/test/test/get?str=helloWorld

如果你使用eclipse啟動(dòng)且沒有正常啟動(dòng),特別是出現(xiàn)嚴(yán)重錯(cuò)誤時(shí),請(qǐng)先檢查web.xml配置命名有沒有問題,然后再檢查test_web項(xiàng)目的assembly,這個(gè)會(huì)影響項(xiàng)目的發(fā)布文件,下圖所示,右鍵項(xiàng)目點(diǎn)properties,沒有test_framework的話就加入framework項(xiàng)目。
網(wǎng)站無響應(yīng),檢查一下tomcat的端口,默認(rèn)是8080。404檢查代碼的映射路徑。

5.結(jié)束語
第一次寫技術(shù)文章,記錄一下自己的學(xué)習(xí)過程,日后會(huì)以當(dāng)前項(xiàng)目作為基礎(chǔ),繼續(xù)記錄下自己遇到的問題和分享的知識(shí),希望能幫助到一部分新手,此外,本篇文章中若有錯(cuò)誤,歡迎指出,我會(huì)不斷更新文章誤點(diǎn),不吝賜教。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74078.html

相關(guān)文章

  • SpringBoot多模塊項(xiàng)目實(shí)踐(Multi-Module)

    摘要:接下來,本文將重點(diǎn)闡述在環(huán)境的多模塊構(gòu)建過程。本項(xiàng)目傳送門一創(chuàng)建聚合父工程首先使用來快速創(chuàng)建好一個(gè)工程。然后在里面聲明該父工程包含的子模塊。 序言:比起傳統(tǒng)復(fù)雜的單體工程,使用Maven的多模塊配置,可以幫助項(xiàng)目劃分模塊,鼓勵(lì)重用,防止POM變得過于龐大,方便某個(gè)模塊的構(gòu)建,而不用每次都構(gòu)建整個(gè)項(xiàng)目,并且使得針對(duì)某個(gè)模塊的特殊控制更為方便。接下來,本文將重點(diǎn)闡述SpringBoot在M...

    renweihub 評(píng)論0 收藏0
  • IDEA多module項(xiàng)目maven依賴的一些說明

    摘要:如果子模塊不聲明依賴的使用,即使該依賴在父中的中聲明了,也不會(huì)產(chǎn)生任何效果。 不管eclipse有沒有被被時(shí)代拋棄,反正是被我拋棄了,因?yàn)镮DEA是真的好用 現(xiàn)在公司的項(xiàng)目基本都是基于maven的多module項(xiàng)目,controller,service,model,dao等都被分成了不同的module,這樣做當(dāng)然也是為了解耦。 這些module可根據(jù)需要在pom.xml配置來打成war...

    pkwenda 評(píng)論0 收藏0
  • Spring Boot 2.x基礎(chǔ)教程:快速入門

    摘要:編寫一個(gè)接口創(chuàng)建命名為根據(jù)實(shí)際情況修改創(chuàng)建類,內(nèi)容如下啟動(dòng)主程序,使用等工具發(fā)起請(qǐng)求,可以看到頁面返回編寫單元測(cè)試用例打開的下的測(cè)試入口類。 簡(jiǎn)介 在您第1次接觸和學(xué)習(xí)Spring框架的時(shí)候,是否因?yàn)槠浞彪s的配置而退卻了?在你第n次使用Spring框架的時(shí)候,是否覺得一堆反復(fù)黏貼的配置有一些厭煩?那么您就不妨來試試使用Spring Boot來讓你更易上手,更簡(jiǎn)單快捷地構(gòu)建Spring應(yīng)...

    tigerZH 評(píng)論0 收藏0
  • Maven模塊項(xiàng)目搭建+整合SSM框架

    摘要:繼承作用就是避免配置重復(fù),對(duì)于子項(xiàng)目來說應(yīng)該關(guān)心父項(xiàng)目是怎么樣配置的。聚合字面理解就是聚在一起合作完成工作,就是將子模塊聚集起來完成相應(yīng)的項(xiàng)目需求父工程的搭建項(xiàng)目結(jié)構(gòu)在父工程中,主要負(fù)責(zé)完成依賴的版本管理,并不是實(shí)際的依賴。 從大二開始就一直關(guān)注segmentFault,在問題專區(qū)幫忙回答一些自己知曉的問題;在寫這篇文章之前我一直會(huì)在朋友圈發(fā)一些自己遇到的問題以及解決辦法,這是第一次寫...

    liaosilzu2007 評(píng)論0 收藏0
  • 擼一個(gè)Java腳手架,一統(tǒng)團(tuán)隊(duì)項(xiàng)目結(jié)構(gòu)風(fēng)格

    摘要:這個(gè)文件會(huì)出現(xiàn)在創(chuàng)建的模板工程中,如果是單模塊工程,則是對(duì)整個(gè)項(xiàng)目的依賴管理如果是多模塊工程,該是總文件,該文件中會(huì)定義項(xiàng)目的子模塊以及對(duì)子模塊的依賴進(jìn)行管理等,子模塊定義在子模塊下,子模塊文件只管理子模塊的依賴。 雖然maven已經(jīng)提供了maven-archetype-webapp、maven-archetype-quickstart等項(xiàng)目骨架幫助我們快速構(gòu)建項(xiàng)目架構(gòu),但是默認(rèn)提供的...

    邱勇 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<