<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      0228 我的潘多拉

      image.png

      我的潘多拉

      從一個(gè)故事說(shuō)起。
      從前,有個(gè)Java程序員非常喜歡寫(xiě)程序,喜歡研究源碼,讀英文文檔。但是它在一家小公司里工作,公司的技術(shù)棧很陳舊。


      單個(gè)系統(tǒng)代碼中含有很多的xml配置,配置各種中間件的入口適配器,而不同的業(yè)務(wù)系統(tǒng)中都是類(lèi)似的配置。
      啟動(dòng)單個(gè)系統(tǒng)很慢。
      啟動(dòng)依賴(lài)web組件,無(wú)法快速部署。
      公共組件的依賴(lài)復(fù)雜,容易依賴(lài)沖突,版本陳舊。
      在springcloud流行的時(shí)代,無(wú)法快速集成新的優(yōu)秀組件。


      而且,團(tuán)隊(duì)統(tǒng)一使用類(lèi)似的項(xiàng)目模板,maven多模塊,更換的阻力大。
      使用統(tǒng)一項(xiàng)目模板可以更好的規(guī)范團(tuán)隊(duì)的代碼結(jié)構(gòu),遵守公共的公共組件規(guī)約,減少了不同的工程師維護(hù)代碼的成本。

      現(xiàn)實(shí)很殘酷,我愛(ài)springboot。


      springboot不是新的東西,官網(wǎng)寫(xiě)的目標(biāo)很強(qiáng)大:build everything ;


      可以很好的對(duì)癥下藥,用了之后應(yīng)該會(huì)神清氣爽。


      springboot提倡零xml,使用java config的模式取代配置代碼,通過(guò)代碼的方式,就有可能消除重復(fù)的配置。
      springboot的啟動(dòng)速度很快,看了部分源碼,有部分異步啟動(dòng)裝配組件。
      springboot為快速部署而生,內(nèi)置了web容器無(wú)需配置tomcat.
      springboot可以使用starter的方式使用公共組件,而且很好的解決了依賴(lài)沖突。

      springboot積累了大量的最佳實(shí)踐,為springcloud和各種大的云廠商提供很好的很好的支持。
      而springcloud提供了成熟配套的微服務(wù)組件,技術(shù)更先進(jìn),在行業(yè)的通用性更強(qiáng)。


      那么如何在熱愛(ài)新技術(shù)跟現(xiàn)實(shí)的成就的工作中找到一條兩全其美的高速公路呢?

      如何打開(kāi)上圖中的潘多拉魔盒,連接現(xiàn)實(shí)與夢(mèng)想。

      簡(jiǎn)單直接:
      直接把項(xiàng)目骨架改成基于springboot結(jié)構(gòu)的就可以了;
      團(tuán)隊(duì)習(xí)慣多模塊,那就改造成多模塊的,發(fā)布模塊改為springboot就好了;
      團(tuán)隊(duì)封裝了很多公共組件,接著用,加個(gè)適配器改造成springbootstarter核心代碼不變,使用xml接著配置也行,咱兼容并包。


      剩下的事情就交給springboot,各種最佳實(shí)踐,各種好用的組件,拿來(lái)就用,955不是夢(mèng),多點(diǎn)時(shí)間健身,多點(diǎn)時(shí)間陪家人。


      擴(kuò)大自己的技術(shù)影響力,讓更多的小伙伴使用,出任CTO, 改善生活也不是夢(mèng)。

      改造springboot

      阿里巴巴的java編程規(guī)范大行其道,三層模型流行已久。


      image.png




      分層對(duì)應(yīng)maven的模塊,簡(jiǎn)單畫(huà)了一下層跟模塊的對(duì)應(yīng)關(guān)系圖。


      image.png




      原來(lái)的骨架結(jié)構(gòu)如下圖。
      image.png

      rest模塊的包約定如下:
      按照springboot的最佳實(shí)踐,所有需要spring自動(dòng)掃描的類(lèi)放在xxxApplication類(lèi)的同級(jí)或者下級(jí)目錄中;

      image.png

      dal的包約定:

      image.png

      配置好mybatis的generator,可以方便生成持久層代碼;

      代碼我也貼出來(lái)!

      Archetype封裝

      achetype的流程:

      image.png

      開(kāi)始流程前,先查閱一下maven的archetype的使用文檔。上圖是我閱讀官網(wǎng)的文檔之后畫(huà)的流程圖。下面來(lái)一步一步實(shí)現(xiàn)。


      必須資源見(jiàn)紅框:


      image.png

      1 新建項(xiàng)目

      沒(méi)什么好說(shuō)的,直接使用maven提供的quickstart走起,刪掉java代碼。
      清理好pom.xml,只保留mgav

      2 配置pom的插件

      <?xml version="1.0" encoding="UTF-8"?>
      
      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
      
        <groupId>com.springbootpractice.demo</groupId>
        <artifactId>archetypes-springboot</artifactId>
        <version>1.0-SNAPSHOT</version>
        <build>
          <extensions>
            <extension>
              <groupId>org.apache.maven.archetype</groupId>
              <artifactId>archetype-packaging</artifactId>
              <version>3.1.1</version>
            </extension>
          </extensions>
       
        </build>
      
      </project>
      
      

      要點(diǎn)強(qiáng)調(diào)一下:
      1   配置擴(kuò)展archetype-packaging;

      3 配置archetype-metadata

      <?xml version="1.0" encoding="UTF-8"?>
      <archetype-descriptor
              xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0
              http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd"
              xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              name="springboot-multi-module">
      
          <requiredProperties>
              <requiredProperty key="groupId">
                  <defaultValue>com.leshiguang.industry.study</defaultValue>
              </requiredProperty>
              <requiredProperty key="artifactId">
                  <defaultValue>demo-services</defaultValue>
              </requiredProperty>
              <requiredProperty key="package">
                  <defaultValue>com.leshiguang.industry.study.demo</defaultValue>
              </requiredProperty>
              <requiredProperty key="version">
                  <defaultValue>1.0-SNAPSHOT</defaultValue>
              </requiredProperty>
              <requiredProperty key="projectAuthor">
                  <defaultValue>fuchun.li</defaultValue>
              </requiredProperty>
          </requiredProperties>
      
          <fileSets>
              <fileSet filtered="true" encoding="UTF-8">
                  <directory/>
                  <includes>
                      <include>pom.xml</include>
                      <include>.gitignore</include>
                      <include>README.MD</include>
                  </includes>
              </fileSet>
          </fileSets>
      
          <modules>
              <module id="${rootArtifactId}-api" dir="__rootArtifactId__-api" name="${rootArtifactId}-api">
                  <fileSets>
                      <fileSet filtered="true" encoding="UTF-8" packaged="true">
                          <directory>src/main/java</directory>
                          <includes>
                              <include>**/*.*</include>
                          </includes>
                      </fileSet>
                      <fileSet filtered="true" encoding="UTF-8">
                          <directory/>
                          <includes>
                              <include>pom.xml</include>
                              <include>.gitignore</include>
                              <include>README.MD</include>
                          </includes>
                      </fileSet>
                  </fileSets>
              </module>
              <module id="${rootArtifactId}-dal" dir="__rootArtifactId__-dal" name="${rootArtifactId}-dal">
                  <fileSets>
                      <fileSet filtered="true" encoding="UTF-8" packaged="true">
                          <directory>src/main/java</directory>
                          <includes>
                              <include>**/*.*</include>
                          </includes>
                      </fileSet>
                      <fileSet filtered="true" encoding="UTF-8" packaged="false">
                          <directory>src/main/resources</directory>
                          <includes>
                              <include>jdbc.properties</include>
                              <include>generateConfig.xml</include>
                              <include>mapper/*.*</include>
                          </includes>
                          <excludes>
                              <exclude>comment.ftl</exclude>
                          </excludes>
      
                      </fileSet>
                      <fileSet filtered="true" encoding="UTF-8">
                          <directory></directory>
                          <includes>
                              <include>pom.xml</include>
                              <include>.gitignore</include>
                              <include>README.MD</include>
                          </includes>
                      </fileSet>
                  </fileSets>
              </module>
              <module id="${rootArtifactId}-biz" dir="__rootArtifactId__-biz" name="${rootArtifactId}-biz">
                  <fileSets>
                      <fileSet filtered="true" encoding="UTF-8" packaged="true">
                          <directory>src/main/java</directory>
                          <includes>
                              <include>**/*.*</include>
                          </includes>
                      </fileSet>
                      <fileSet filtered="true" encoding="UTF-8" packaged="false">
                          <directory>src/main/resources</directory>
                          <includes>
                              <include>**/*.*</include>
                          </includes>
                      </fileSet>
                      <fileSet filtered="true" encoding="UTF-8">
                          <directory></directory>
                          <includes>
                              <include>pom.xml</include>
                              <include>.gitignore</include>
                              <include>README.MD</include>
                          </includes>
                      </fileSet>
                  </fileSets>
              </module>
              <module id="${rootArtifactId}-rest" dir="__rootArtifactId__-rest" name="${rootArtifactId}-rest">
                  <fileSets>
                      <fileSet filtered="true" encoding="UTF-8" packaged="true">
                          <directory>src/main/java</directory>
                          <includes>
                              <include>**/*.*</include>
                          </includes>
                      </fileSet>
                      <fileSet filtered="true" encoding="UTF-8" packaged="false">
                          <directory>src/test/java</directory>
                          <includes>
                              <include>**/*.*</include>
                          </includes>
                      </fileSet>
                      <fileSet filtered="true" encoding="UTF-8" packaged="false">
                          <directory>src/main/resources</directory>
                          <includes>
                              <include>**/*.*</include>
                          </includes>
                      </fileSet>
                      <fileSet filtered="true" encoding="UTF-8">
                          <directory></directory>
                          <includes>
                              <include>pom.xml</include>
                              <include>.gitignore</include>
                              <include>README.MD</include>
                          </includes>
                      </fileSet>
                  </fileSets>
              </module>
              <module id="${rootArtifactId}-soa" dir="__rootArtifactId__-soa" name="${rootArtifactId}-soa">
                  <fileSets>
                      <fileSet filtered="true" encoding="UTF-8" packaged="true">
                          <directory>src/main/java</directory>
                          <includes>
                              <include>**/*.*</include>
                          </includes>
                      </fileSet>
                      <fileSet filtered="true" encoding="UTF-8" packaged="false">
                          <directory>src/test/java</directory>
                          <includes>
                              <include>**/*.*</include>
                          </includes>
                      </fileSet>
                      <fileSet filtered="true" encoding="UTF-8" packaged="false">
                          <directory>src/main/resources</directory>
                          <includes>
                              <include>**/*.*</include>
                          </includes>
                      </fileSet>
                      <fileSet filtered="true" encoding="UTF-8">
                          <directory></directory>
                          <includes>
                              <include>pom.xml</include>
                              <include>.gitignore</include>
                              <include>README.MD</include>
                          </includes>
                      </fileSet>
                  </fileSets>
              </module>
          </modules>
      </archetype-descriptor>
      
      

      xml的規(guī)約如下:

      基本結(jié)構(gòu)如下圖,英文還比較好理解。

      image.png

      節(jié)點(diǎn)里面的元素,看鏈接,不難。

      4 配置模板資源

      這里說(shuō)明一下變量。

      _ rootArtifactId 路徑占位符_
       \({rootArtifactId}  文件占位符<br />\){package}  包名占位符

      image.png

      5 安裝到本地

      mvn clean install
      

      6 本地使用


      image.png

      file

      整理到團(tuán)隊(duì),推廣一下這個(gè)骨架,然后不斷整理已有的中間件到這個(gè)骨架中迭代。
      早日打開(kāi)我的潘多拉。




      骨架代碼點(diǎn)我獲取!

      原創(chuàng)不易,轉(zhuǎn)載請(qǐng)注明出處。

      posted @ 2020-03-03 09:29  李福春  閱讀(562)  評(píng)論(1)    收藏  舉報(bào)
      主站蜘蛛池模板: 99久久免费精品色老| 亚洲av成人无码天堂| 精品国产成人一区二区| 精品av综合导航| 中文字幕av一区二区| 玛纳斯县| 免费A级毛片无码A∨蜜芽试看| 亚洲成在人线AV品善网好看| 国偷自产视频一区二区久| 亚洲欧美自偷自拍视频图片| 国内精品视频一区二区三区| 最新中文字幕国产精品| 五月开心六月丁香综合色啪| 亚洲午夜精品久久久久久抢 | japanese无码中文字幕| 日韩熟女精品一区二区三区 | 午夜免费视频国产在线| 波多野结衣无内裤护士| 丰镇市| 精品国产精品中文字幕| 99国产精品自在自在久久 | 国产精品视频全国免费观看| 国内久久人妻风流av免费| 免费A级毛片无码A∨蜜芽试看| 色综合 图片区 小说区| 人妻少妇无码精品专区| 亚洲另类激情专区小说图片| 亚洲热线99精品视频| 日本高清视频色欧WWW| 久久久久免费看成人影片| 国产桃色在线成免费视频| 把女人弄爽大黄A大片片| 深夜av免费在线观看| 亚洲二区中文字幕在线| 日区中文字幕一区二区| 亚洲日韩欧美丝袜另类自拍| 国产精品一区二区三区四区| 亚洲一区二区三区av链接| 中文字幕av中文字无码亚| 亚洲日韩精品无码一区二区三区 | 亚洲av色图一区二区三区|