首先:创建Maven一个工程作为父工程。
需要源码私信我,或者评论(源码)
1、配置父工程的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.lm.cloud</groupId>
<!--你的工程名 不一定和我一样-->
<artifactId>cloudMain</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!-- 配置SpringBoot的版本 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/>
</parent>
<properties>
<module.version>1.0-NJ-SNAPSHOT</module.version>
<mc-core.version>1.0.1-NJ-SNAPSHOT</mc-core.version>
<cmsr.version>1.0.0-SNAPSHOT</cmsr.version>
<mybatis-plus.version>3.0.1</mybatis-plus.version>
<apache.commons.version>3.8.1</apache.commons.version>
<apache.commons.collections.version>4.3</apache.commons.collections.version>
<mysql.connector.version>5.1.37</mysql.connector.version>
<ma.glasnost.orika.version>1.4.2</ma.glasnost.orika.version>
<javassist.version>3.18.2-GA</javassist.version>
<fastjson.version>1.2.41</fastjson.version>
<spring.shiro.version>1.4.2</spring.shiro.version>
<io.jsonwebtoken.version>0.9.0</io.jsonwebtoken.version>
<jwt.version>3.1.0</jwt.version>
<poi.version>4.2.0</poi.version>
<calendar.version>4.0.1</calendar.version>
<ftp.version>3.6</ftp.version>
<htppclient.version>4.5.3</htppclient.version>
<commonsIo.version>2.6</commonsIo.version>
<guava.version>23.0</guava.version>
</properties>
<!-- 资源仓库地址 -->
<repositories>
<repository>
<id>releases</id>
<name>nexus Repository</name>
<layout>default</layout>
<!--这个配置你们公司的或者阿里的-->
<url>http://..............</url>
</repository>
</repositories>
<!--这个几乎都用的上,所有我引入父工程了-->
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!--与上方SpringBoot兼容的Cloud版本 别瞎改 会依赖冲突 可以参考SpringCloud官网-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- 子模块 start -->
<!-- 共用的API接口(子模块) end -->
<!-- MySQL driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
<scope>runtime</scope>
</dependency>
<!-- orika -->
<dependency>
<groupId>ma.glasnost.orika</groupId>
<artifactId>orika-core</artifactId>
<version>${ma.glasnost.orika.version}</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>${javassist.version}</version>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!-- commons -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${apache.commons.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>${apache.commons.collections.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${io.jsonwebtoken.version}</version>
</dependency>
<!-- jjwt -->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>${jwt.version}</version>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>${ftp.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commonsIo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${htppclient.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>${htppclient.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>
<delimit>$</delimit>
</delimiters>
</configuration>
</plugin>
</plugins>
</build>
</project>
2,创建子模块,pay模块
创建模块主要就5步
1. 建module //新建module工程 我一般是建maven工程导入springboot依赖 习惯 且方便
2. 改POM //添加该有的依赖
3. 写YML //配置yml文件
4. 主启动 //编写启动类
5. 业务类 //开始写业务
1,子模块名字:
cloudPay8001
2,pom依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</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>
<!--公共的api 这个你没有的话就删除掉 这个是我例外的一个子工程,我作为共用的api类来使用
具体使用方法就是在建一个子工程 然后写一些共用的类,之后mvn install打包
之后再在工程中引入它-->
<dependency>
<groupId>com.lm.cloud</groupId>
<artifactId>cloudApiCommons</artifactId>
</dependency>
<!--mybatis-plus自动的维护了mybatis以及mybatis-spring的依赖,在springboot中这三者不能同时的出现,避免版本的冲突,表示:跳进过这个坑-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
3,创建application.yml
server:
port: 8001
spring:
application:
name: cloud-payment-service
datasource:
# 当前数据源操作类型
type: com.alibaba.druid.pool.DruidDataSource
# mysql驱动类
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db2019?useUnicode=true&characterEncoding=
UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: root
mybatis:
mapper-locations: classpath*:mapper/*.xml
type-aliases-package: com.lm.cloud.entities
#它一般对应我们的实体类所在的包,这个时候会自动取对应包中
#不包括包名的简单类名作为包括包名的别名。
#多个package之间可以用逗号或者分号等来进行分隔(value的值一定要是包的全)
4,主启动类
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableEurekaClient
public class CloudPay8001Main {
public static void main(String[] args) {
SpringApplication.run(CloudPay8001Main.class, args);
}
}
5,业务类
1,sql
CREATE TABLE 'payment'(
'id' bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
'serial' varchar(200) DEFAULT "",
PRLMARY KEY("id")
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET = utf8
2,实体类
public class Payment implements Serializable {
private Long id;
private String serial;
}
3,.entity类
public class CommonResult<T> {
private Integer code;
private String message;
private T data;
public CommonResult(Interger code,String message) {
this.code = code;
this.message = message;
}
public vode setData(T data) {
this.data = data;
}
}
4,dao层:
@Mapper
public interface PaymentDao {
public int create(Payment payment);
public Payment getPaymentById(@Param("id") Long id);
}
5,mapper配置文件类
在resource下,创建mapper/PayMapper.xml
<mapper namespace="com.lm.cloud.dao.PaymentDao">
<insert id="create" parameterType="Payment" useGeneratedKeys="true" keyProperty="id">
insert into payment(serial) values(#{serial});
</insert>
<resultMap id="BaseResultMap" type="com.lm.cloud.entities.Payment">
<id column = "id" property="id" jdbcType="BIGINT"/>
<id column="serial" property="serial" jdbcType="VERCHAR"/>
</resultMap>
<select id="getPaymentById" parmeterType+"Long" resultMap="BaseResultMap"> select * from payment where id = #{id};
</select>
</mapper>
6,写service和serviceImpl
public interface PaymentService {
public int create(Payment payment);
public Payment getPaymentById(@Param("id") Long id);
}
//之后在建PaymentService的目录下在建一个impl目录 然后建如下的类
@service
public class PaymentServiceImpl implements PaymentService {
@Resource
private PaymentDao paymentDao;
public int create(Payment payment) {
return paymentDao.create(payment);
}
public Payment getPaymentById(Long id) {
return paymentDao.getPaymentById(Long id);
}
}
7,controller
@RestController
@Slf4j
public class PaymentController {
@Resource
private PaymentService paymentService;
·····················
}
3,热部署:
自己到网上搜,一搜一大把
4,消费者模块Order:
和上方建Pay模块的步骤相似
1,pom
2,yml配置文件
server:
port: 80
3,主启动类
4.复制pay模块的实体类,entity类
5,写controller类
因为这里是消费者类,主要是消费,那么就没有service和dao,需要调用pay模块的方法
并且这里还没有微服务的远程调用,那么如果要调用另外一个模块,则需要使用基本的api调用
使用RestTemplate调用pay模块,
将restTemplate注入到容器
编写controller:
5,重构,
新建一个模块,将重复代码抽取到一个公共模块中
1,创建commons模块
2,抽取公共pom
3,entity和实体类放入commons中
4,使用mavne,将commone模块打包(install),
其他模块引入commons
…
…
…