生活随笔
收集整理的这篇文章主要介绍了
Eclipse构建Maven分包分模块项目并构建服务端
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
首先说一下Maven 模块结构:
一个简单的Maven模块结构是这样的: ---- app-parent 一个父项目(app-parent)聚合很多子项目(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)
环境
JDK 1.8/Eclipse/Spring Boot 1.5.9.RELEASE/Spring Cloud Dalston.SR1
构建Maven 父项目
打开Eclipse,新建Maven 项目 springcloudDemo 注意:
由于笔记是学习完写的,所以在截图的时候完全按照自己搭建的项目名来写,出现项目名重复,所以这里直接马赛克。正常不会出现这种问题。 请选择 pom
打开父项目:观察结构 添加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>
基础模快共有三个
springcloudDemo-api 封装的整体entity/接口/公共配置等 springcloudDemo-provider-dept-8001 微服务落地的服务提供者 springcloudDemo-consumer-dept-80 微服务调用的客户端使用 下面分别就上面上个模块进行构建
pringcloudDemo-api 构建
鼠标右键点击 父项目 springcloudDemo,新建 Maven Mondule ,点击下一步 输入模块名称:springcloudDemo-api 选择Jar 包,点击Finish 查看父项目此时的情况 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
; }
}
注意: 可能大家认为 使用了 lombok 为什么还需要写setter/getter 方法,但是在之后的组件整合的过程中,返回Dept Json 数据的时候无法正确返回所以加上了。 8. 点击pom 文件 run : maven clean 9. clean 之后,maven install 将 api 打成jar包供之后的模块使用。 注意: 在打包的过程中,可能出现 Perhaps you are running on a JRE rather than a JDK? 解决办法可以去搜一搜。
springcloudDemo-provider-dept-8001
如同上面新建 springcloudDemo-api 的步骤一样,新建项目。 建成后,父项目拥有: 下面看一下 springcloudDemo-api 项目结构:
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 # 当前数据源操作类型driver-class-name: org.gjt.mm.mysql.Driver # mysql驱动包url: jdbc:mysql://xxxxxxxxx:3306/cloudDB01 # 数据库名称username: rootpassword: rootdbcp2:min-idle: 5 # 数据库连接池的最小维持连接数initial-size: 5 # 初始化连接数max-total: 5 # 最大连接数max-wait-millis: 200 # 等待连接获取的最大超时时间
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 ( ) ; }
}
服务启动类 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
) ; }
}
数据库文件, 根据上面application.yml 配置的数据库,到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 ( '开发部' , DATABASE ( ) ) ;
INSERT INTO dept
( dname
, db_source
) VALUES ( '人事部' , DATABASE ( ) ) ;
INSERT INTO dept
( dname
, db_source
) VALUES ( '财务部' , DATABASE ( ) ) ;
INSERT INTO dept
( dname
, db_source
) VALUES ( '市场部' , DATABASE ( ) ) ;
INSERT INTO dept
( dname
, db_source
) VALUES ( '运维部' , DATABASE ( ) ) ; SELECT * FROM dept
;
服务端测试
启动启动类 这样我们的 Eclipse 分包构建项目就完成了,且完成了 SpringCloud 服务端的程序,由于篇幅有限,所以客户端的放在下一个篇中。
总结
以上是生活随笔 为你收集整理的Eclipse构建Maven分包分模块项目并构建服务端 的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔 网站内容还不错,欢迎将生活随笔 推荐给好友。