生活随笔
收集整理的這篇文章主要介紹了
Eclipse构建Maven分包分模块项目并构建服务端
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
首先說一下Maven 模塊結(jié)構(gòu):
一個(gè)簡單的Maven模塊結(jié)構(gòu)是這樣的: ---- app-parent 一個(gè)父項(xiàng)目(app-parent)聚合很多子項(xiàng)目(app-util,app-dao,app-service,app-web) |---- pom.xml (pom) | |-------- app-util | |-------- pom.xml (jar) | |-------- app-dao | |-------- pom.xml (jar) | |-------- app-service | |-------- pom.xml (jar) | |-------- app-web |-------- pom.xml (war)
環(huán)境
JDK 1.8/Eclipse/Spring Boot 1.5.9.RELEASE/Spring Cloud Dalston.SR1
構(gòu)建Maven 父項(xiàng)目
打開Eclipse,新建Maven 項(xiàng)目 springcloudDemo 注意:
由于筆記是學(xué)習(xí)完寫的,所以在截圖的時(shí)候完全按照自己搭建的項(xiàng)目名來寫,出現(xiàn)項(xiàng)目名重復(fù),所以這里直接馬賽克。正常不會(huì)出現(xiàn)這種問題。 請(qǐng)選擇 pom
打開父項(xiàng)目:觀察結(jié)構(gòu) 添加pom 依賴:
< 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.mike.demo
</ groupId> < artifactId> springcloudDemo
</ artifactId> < version> 0.0.1-SNAPSHOT
</ version> < packaging> pom
</ packaging> < properties> < project.build.sourceEncoding> UTF-8
</ project.build.sourceEncoding> < maven.compiler.source> 1.8
</ maven.compiler.source> < maven.compiler.target> 1.8
</ maven.compiler.target> < junit.version> 4.12
</ junit.version> < log4j.version> 1.2.17
</ log4j.version> < lombok.version> 1.16.18
</ lombok.version> </ properties> < dependencyManagement> < dependencies> < dependency> < groupId> org.springframework.cloud
</ groupId> < artifactId> spring-cloud-dependencies
</ artifactId> < version> Dalston.SR1
</ version> < type> pom
</ type> < scope> import
</ scope> </ dependency> < dependency> < groupId> org.springframework.boot
</ groupId> < artifactId> spring-boot-dependencies
</ artifactId> < version> 1.5.9.RELEASE
</ version> < type> pom
</ type> < scope> import
</ scope> </ dependency> < dependency> < groupId> mysql
</ groupId> < artifactId> mysql-connector-java
</ artifactId> < version> 5.0.4
</ version> </ dependency> < dependency> < groupId> com.alibaba
</ groupId> < artifactId> druid
</ artifactId> < version> 1.0.31
</ version> </ dependency> < dependency> < groupId> org.mybatis.spring.boot
</ groupId> < artifactId> mybatis-spring-boot-starter
</ artifactId> < version> 1.3.0
</ version> </ dependency> < dependency> < groupId> ch.qos.logback
</ groupId> < artifactId> logback-core
</ artifactId> < version> 1.2.3
</ version> </ dependency> < dependency> < groupId> junit
</ groupId> < artifactId> junit
</ artifactId> < version> ${junit.version}
</ version> < scope> test
</ scope> </ dependency> < dependency> < groupId> log4j
</ groupId> < artifactId> log4j
</ artifactId> < version> ${log4j.version}
</ version> </ dependency> </ dependencies> </ dependencyManagement>
</ project>
基礎(chǔ)模快共有三個(gè)
springcloudDemo-api 封裝的整體entity/接口/公共配置等 springcloudDemo-provider-dept-8001 微服務(wù)落地的服務(wù)提供者 springcloudDemo-consumer-dept-80 微服務(wù)調(diào)用的客戶端使用 下面分別就上面上個(gè)模塊進(jìn)行構(gòu)建
pringcloudDemo-api 構(gòu)建
鼠標(biāo)右鍵點(diǎn)擊 父項(xiàng)目 springcloudDemo,新建 Maven Mondule ,點(diǎn)擊下一步 輸入模塊名稱:springcloudDemo-api 選擇Jar 包,點(diǎn)擊Finish 查看父項(xiàng)目此時(shí)的情況 pom 依賴
< 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> < parent> < groupId> com.mike.demo
</ groupId> < artifactId> springcloudDemo
</ artifactId> < version> 0.0.1-SNAPSHOT
</ version> </ parent> < artifactId> springcloudDemo-api
</ artifactId> < dependencies> < dependency> < groupId> org.projectlombok
</ groupId> < artifactId> lombok
</ artifactId> </ dependency> </ dependencies>
</ project>
新建 Model Dept
package com. mike. demo. entities ; import java. io. Serializable ; import lombok. Data ;
import lombok. NoArgsConstructor ;
import lombok. experimental. Accessors ; @SuppressWarnings ( "serial" )
@NoArgsConstructor
@Data
@Accessors ( chain
= true )
public class Dept implements Serializable
{ private Long deptno
; private String dname
; private String db_source
; public Dept ( String dname
) { super ( ) ; this . dname
= dname
; } public Dept ( Long deptno
, String dname
, String db_source
) { super ( ) ; this . deptno
= deptno
; this . dname
= dname
; this . db_source
= db_source
; } public Long getDeptno ( ) { return deptno
; } public void setDeptno ( Long deptno
) { this . deptno
= deptno
; } public String getDname ( ) { return dname
; } public void setDname ( String dname
) { this . dname
= dname
; } public String getDb_source ( ) { return db_source
; } public void setDb_source ( String db_source
) { this . db_source
= db_source
; }
}
注意: 可能大家認(rèn)為 使用了 lombok 為什么還需要寫setter/getter 方法,但是在之后的組件整合的過程中,返回Dept Json 數(shù)據(jù)的時(shí)候無法正確返回所以加上了。 8. 點(diǎn)擊pom 文件 run : maven clean 9. clean 之后,maven install 將 api 打成jar包供之后的模塊使用。 注意: 在打包的過程中,可能出現(xiàn) Perhaps you are running on a JRE rather than a JDK? 解決辦法可以去搜一搜。
springcloudDemo-provider-dept-8001
如同上面新建 springcloudDemo-api 的步驟一樣,新建項(xiàng)目。 建成后,父項(xiàng)目擁有: 下面看一下 springcloudDemo-api 項(xiàng)目結(jié)構(gòu):
pom 文件
< 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> < parent> < groupId> com.mike.demo
</ groupId> < artifactId> springcloudDemo
</ artifactId> < version> 0.0.1-SNAPSHOT
</ version> </ parent> < artifactId> springcloudDemo-provider-dept-8001
</ artifactId> < dependencies> < dependency> < groupId> com.mike.demo
</ groupId> < artifactId> springcloudDemo-api
</ artifactId> < version> ${project.version}
</ version> </ dependency> < dependency> < groupId> junit
</ groupId> < artifactId> junit
</ artifactId> </ dependency> < dependency> < groupId> mysql
</ groupId> < artifactId> mysql-connector-java
</ artifactId> </ dependency> < dependency> < groupId> com.alibaba
</ groupId> < artifactId> druid
</ artifactId> </ dependency> < dependency> < groupId> ch.qos.logback
</ groupId> < artifactId> logback-core
</ artifactId> </ dependency> < dependency> < groupId> org.mybatis.spring.boot
</ groupId> < artifactId> mybatis-spring-boot-starter
</ artifactId> </ dependency> < dependency> < groupId> org.springframework.boot
</ groupId> < artifactId> spring-boot-starter-jetty
</ artifactId> </ dependency> < dependency> < groupId> org.springframework.boot
</ groupId> < artifactId> spring-boot-starter-web
</ artifactId> </ dependency> < dependency> < groupId> org.springframework.boot
</ groupId> < artifactId> spring-boot-starter-test
</ artifactId> </ dependency> < dependency> < groupId> org.springframework
</ groupId> < artifactId> springloaded
</ artifactId> </ dependency> < dependency> < groupId> org.springframework.boot
</ groupId> < artifactId> spring-boot-devtools
</ artifactId> </ dependency> </ dependencies> </ project>
新建application.yml 文件
server:port: 8001mybatis:config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路徑type-aliases-package: com.mike.demo.entities # 所有Entity別名類所在包mapper-locations:- classpath:mybatis/mapper/**/*.xml # mapper映射文件spring:application:name: springcloudDemo-dept datasource:type: com.alibaba.druid.pool.DruidDataSource # 當(dāng)前數(shù)據(jù)源操作類型driver-class-name: org.gjt.mm.mysql.Driver # mysql驅(qū)動(dòng)包url: jdbc:mysql://xxxxxxxxx:3306/cloudDB01 # 數(shù)據(jù)庫名稱username: rootpassword: rootdbcp2:min-idle: 5 # 數(shù)據(jù)庫連接池的最小維持連接數(shù)initial-size: 5 # 初始化連接數(shù)max-total: 5 # 最大連接數(shù)max-wait-millis: 200 # 等待連接獲取的最大超時(shí)時(shí)間
mybaties.cfg.xml
<?xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" > < configuration> < settings> < setting name = " cacheEnabled" value = " true" /> </ settings> </ configuration>
DeptMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" > < mapper namespace = " com.mike.demo.dao.DeptDao" > < select id = " findById" resultType = " Dept" parameterType = " Long" > select deptno,dname,db_source from dept where deptno=#{deptno};
</ select> < select id = " findAll" resultType = " Dept" > select deptno,dname,db_source from dept;
</ select> < insert id = " addDept" parameterType = " Dept" > INSERT INTO dept(dname,db_source) VALUES(#{dname},DATABASE());
</ insert> </ mapper>
DeptDao.java
package com. mike. demo. dao ; import java. util. List ;
import org. apache. ibatis. annotations. Mapper ;
import com. mike. demo. entities. Dept ; @Mapper
public interface DeptDao
{ public boolean addDept ( Dept dept
) ; public Dept findById ( Long id
) ; public List < Dept > findAll ( ) ;
}
DeptService.java
package com. mike. demo. service ; import java. util. List ;
import com. mike. demo. entities. Dept ;
public interface DeptService { public boolean add ( Dept dept
) ; public Dept get ( Long id
) ; public List < Dept > list ( ) ; }
DeptServiceImpl.java
package com. mike. demo. service. impl ; import java. util. List ; import org. springframework. beans. factory. annotation. Autowired ;
import org. springframework. stereotype. Service ; import com. mike. demo. dao. DeptDao ;
import com. mike. demo. entities. Dept ;
import com. mike. demo. service. DeptService ; @Service
public class DeptServiceImpl implements DeptService
{ @Autowired private DeptDao dao
; @Override public boolean add ( Dept dept
) { return dao
. addDept ( dept
) ; } @Override public Dept get ( Long id
) { return dao
. findById ( id
) ; } @Override public List < Dept > list ( ) { return dao
. findAll ( ) ; } }
DeptController.java
package com. mike. demo. controller ; import java. util. List ; import org. springframework. beans. factory. annotation. Autowired ;
import org. springframework. web. bind. annotation. PathVariable ;
import org. springframework. web. bind. annotation. RequestBody ;
import org. springframework. web. bind. annotation. RequestMapping ;
import org. springframework. web. bind. annotation. RequestMethod ;
import org. springframework. web. bind. annotation. RestController ; import com. mike. demo. entities. Dept ;
import com. mike. demo. service. DeptService ; @RestController
public class DeptController
{ @Autowired private DeptService service
; @RequestMapping ( value
= "/dept/add" , method
= RequestMethod . POST
) public boolean add ( @RequestBody Dept dept
) { return service
. add ( dept
) ; } @RequestMapping ( value
= "/dept/get/{id}" , method
= RequestMethod . GET
) public Dept get ( @PathVariable ( "id" ) Long id
) { return service
. get ( id
) ; } @RequestMapping ( value
= "/dept/list" , method
= RequestMethod . GET
) public List < Dept > list ( ) { return service
. list ( ) ; }
}
服務(wù)啟動(dòng)類 DeptProvider8001_App
package com. mike. demo ; import org. springframework. boot. SpringApplication ;
import org. springframework. boot. autoconfigure. SpringBootApplication ;
@SpringBootApplication
public class DeptProvider8001_App
{ public static void main ( String [ ] args
) { SpringApplication . run ( DeptProvider8001_App . class , args
) ; }
}
數(shù)據(jù)庫文件, 根據(jù)上面application.yml 配置的數(shù)據(jù)庫,到Mysql中建庫建表
DROP DATABASE IF EXISTS cloudDB01
;
CREATE DATABASE cloudDB01
CHARACTER SET UTF8
;
USE cloudDB01
;
CREATE TABLE dept
( deptno
BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT , dname
VARCHAR ( 60 ) , db_source
VARCHAR ( 60 )
) ;
INSERT INTO dept
( dname
, db_source
) VALUES ( '開發(fā)部' , DATABASE ( ) ) ;
INSERT INTO dept
( dname
, db_source
) VALUES ( '人事部' , DATABASE ( ) ) ;
INSERT INTO dept
( dname
, db_source
) VALUES ( '財(cái)務(wù)部' , DATABASE ( ) ) ;
INSERT INTO dept
( dname
, db_source
) VALUES ( '市場部' , DATABASE ( ) ) ;
INSERT INTO dept
( dname
, db_source
) VALUES ( '運(yùn)維部' , DATABASE ( ) ) ; SELECT * FROM dept
;
服務(wù)端測(cè)試
啟動(dòng)啟動(dòng)類 這樣我們的 Eclipse 分包構(gòu)建項(xiàng)目就完成了,且完成了 SpringCloud 服務(wù)端的程序,由于篇幅有限,所以客戶端的放在下一個(gè)篇中。
總結(jié)
以上是生活随笔 為你收集整理的Eclipse构建Maven分包分模块项目并构建服务端 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。