oauth 手写_从0手写springCloud项目(框架代码详解)

写在前面

前面一篇将springCloud所需的几个组件搭建起来了,接下来以user模块为例子主要记录一下项目中集成的技术,框架,和使用方式。我想从以下几个地方总结:

mybatis-plus3

lcn5.0.2

liquibase

oauth2

others(es,rabbitmq,全局异常处理,feign之间异常处理,logback,mysql,redis)

集成mybatis-plus3

可能有些同学常用的持久层框架是jpa,但是就我实践而言,mybatisplus好用的不是一丁点,个人建议用mybatisplus...现在plus3的版本支持的还是蛮多的:乐观锁,版本号,代码生成器,分页插件,热加载,通用枚举,自动填充,动态数据源....详见官网(https://mp.baomidou.com),而且3.0集成也比2.x简单了不少,最简单的只需要加一个pom坐标即可,但是如果需要个性化配置,我们还是要写config,当然也不麻烦,很简单的。

pom

com.baomidou

mybatis-plus-boot-starter

3.1.0

yml

//可以看到我的各个文件存放的路径分别在哪里

mybatis:

type-aliases-package: cn.iamcrawler.crawler_common.domain.goddess

mapper-locations: cn/iamcrawler/crawlergoddess/mapper/*Mapper.xml

type-handlers-package: cn.iamcrawler.crawlergoddess.mapper.typehandler

global-config:

refresh-mapper: true

那么接下来继承plus的两个方法就可以了

/**

* Created by liuliang on 2019/3/21.

*/

public interface DataUserMapper extends BaseMapper {

}

@Service

@Slf4j

public class DataUserService extends ServiceImpl{

}

ps:大家可以想一想,spring的controller,service,mapper需要使用注解将其标识为bean才能扫描得到,而这里的mapper却没有添加@Repository注解,这是因为我在注解类上加了一个注解,指定spring启动的时候扫描到这个包下,所以这里就可以不用添加@Repository注解,也可以被spring扫描到啦。主类的注解如下:

@SpringBootApplication

@EnableEurekaClient

@EnableFeignClients

@EnableTransactionManagerServer

@MapperScan("cn.iamcrawler.crawlergoddess.mapper")//上面说的,就是这个注解!

public class CrawlerGoddessApplication {

public static void main(String[] args) {

SpringApplication.run(CrawlerGoddessApplication.class, args);

}

}

是的,就是这么简单。plus最简单的集成就完成了,接下来继承mapper接口,service接口就可以写sql了。具体详见mybatis-plus官网。

ps:最后还有一个小知识点,其实大家可以看到,我的xml是放在和mapper一起的(默认是放在resource下面,打包成jar的时候路径就是我们常说的classpath),而我们知道,在maven打包jar的时候,是不会扫描这个java下的.xml文件的,为什么我打包jar也可以扫描呢?是因为我在maven里面配置了一个将java下的xml也打包的程序,如下:

crawler-goddess

org.springframework.boot

spring-boot-maven-plugin

src/main/java

**/*.xml

src/main/resources

集成lcn5.0.2

微服务集成分布式事务框架已经不是一个新鲜的事情,在这方面,我前面也写过好几个文章介绍过,其中有springboot1.5.9+lcn4.1.0( https://segmentfault.com/a/11... ), 有springboot2.1.3+lcn5.0.2( https://segmentfault.com/a/11... )。大家可以按需阅读并配置,当然这里我这个demo配置的是5.0.2版本.毕竟这个版本比4.1.0强大了不少,并且配置也更加方便。具体大家也可以参照lcn官网,描述的非常详细(http://www.txlcn.org)

集成liquibase

不知道大家是否经历过没有用程序代码管理sql语句的项目,我最开始经历过一次。每次上线前,组长会问我们有没有什么sql需要执行的,上线前执行还是上线后执行,他那边统计好,然后在生产数据库执行。这样是很麻烦的,每次都要人工统计,人工执行,如果sql没有问题还好,若是有问题,是加长了都不知道是谁写的这句sql,问题很难追根溯源。并且每次更换系统环境,都是直接要把表结构DDL一份出来...真的是很low啊有没有....

而liquibase是一个开源的数据跟踪,管理工具,它可以做我们上面说的所有事情,并且还很强大。接下来看一下在springboot2.1.3是怎么用的吧(boot版本不同,集成方式略有差异,大家注意一下)

pom

org.liquibase

liquibase-core

yml

spring:

application:

name: crawler-goddess

liquibase:

change-log: classpath:liquibase\master.xml #标识liquibase的入口

上面也讲到,classpath其实就是打包后的resource目录,所以这个入口在resource.liquibase下的一个叫master.xml文件里面(当然大家可以自定义路径)

看一下这个master.xml里的信息:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://www.liquibase.org/xml/ns/dbchangelog"

xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">

可以看到配置里面是读的liquibase/changelog/release20180919.xml这个文件

release20180919.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://www.liquibase.org/xml/ns/dbchangelog"

xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog

http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值