CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

实战!如何用Spring+Mybatis快速搭建1个微服务-免费源码丞旭猿

概述

面向服务的架构(SOA)好处自然不必多说,把原来一个庞大的应用中不同的功能单元,拆分成一个一个的微服务,并通过Rpc调用(如 dubbo 或者RESTful)。 达到高内聚,低耦合的效果。

Spring Boot设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用spring boot来快速搭建一个微服务是十分方便的(相比于传统的spring框架)

最近整理的Java架构学习视频和大厂项目底层知识点,需要的同学欢迎私信我【资料】发给你~一起学习进步!

Spring boot

Spring Boot的例子很多,这里简单用Spring+Mybatis来介绍。用一句话来介绍Spring Boot的好处是使用配置文件来简化编码,这里的编码不仅仅值代码,还包括各种xml文件。

第一步 pom依赖

  • 这里使用的spring boot的版本为.5.3.RELEASE
  • mybatis-spring-boot-starter 是Mybatis提供的,所以为什么名字不是叫spring-boot-mybatis-starter(题外话)
<dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId><version>1.5.3.RELEASEversion>dependency><dependency><groupId>org.mybatis.spring.bootgroupId><artifactId>mybatis-spring-boot-starterartifactId><version>1.3.0version>dependency><dependency><groupId>com.alibabagroupId><artifactId>druidartifactId><version>1.0.28version>dependency><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId><version>5.1.41version>dependency>dependencies>

第二步 配置文件

server:port:8181spring:datasource:url:jdbc:mysql://10.160.247.90:9306/realnameusername:realnamepassword:realnamedriverClassName:com.mysql.jdbc.Drivertype:com.alibaba.druid.pool.DruidDataSourcemybatis:mapperLocations:classpath:mapper/*.xmltype-handlers-package:com.netease.urs.realname.daotype-aliases-package:com.netease.urs.realname.entityconfiguration:map-underscore-to-camel-case:true

第三步 启动应用

是的,经过以上配置就可以启动一个Spring Boot的应用。(Mybatis有jar包可以直接生产Mapper类和xml文件,就不再赘述)

@SpringBootApplicationpublicclassBoot{publicstaticvoidmain(String[] args){newSpringApplicationBuilder().build().run(Boot.class,args);
}

现在反过来看看第二步,其实Spring boot已经帮我们生产了DataSource,Mybatis也通过配置文件帮生成了SqlSessionFactory等类。其实反过来看以前的代码,是不是其实很多配置信息都是直接copy过来,稍微修改一下就可以用了。spring boot就是把关键的部分由我们自己通过配置文件来配置,根据这些关键配置信息就可以自动注入相关的Bean。

接入urs服务台配置刷新

第一步: pom依赖

<dependency><groupId>com.netease.ursgroupId><artifactId>urs-mg-property-spring-bootartifactId><version>1.1.9-SNAPSHOTversion>dependency>

第二步:在服务台管理配置信息

Urs服务台的功能很简单,就是根据不同的应用,管理一组key-value对。然后提供一个url,就把同一个应用下的key-value用json格式返回。

可以看出,我们的配置类型有传统的JSON,PROPERTIES,YAMLl 还有自定义的类型,如 LIST

第三步:使用注解注入

例如我们有一个ip白名单,key的名字为ip_config(如上图)

@ComponentpublicclassIpFilterimplementsFilter{@RefreshValue(propertyName ="ip_config")privateList ipConfigs;

    ...

ps:注解注入只是更新配置信息的一种方式,如果有更定制化需求,还可以通过实现一个接口,通过编写代码来更新。

第四步: 配置文件

urs:property:refresh-token: abcdefgrefresh-url:http://xxx.xxx.xxx.xxx/api/getConfigs.json?path=urs-mg/spring-boot-quick-startlistener-port:8182listener-path: /refresh
  • refresh-url :服务台提供的接口
  • refresh-token:调用服务台接口时需要token校验
  • listener-path, listener-port::监听刷新的url,端口。即当访问 本机的8182端口,并且url为/refresh的时候,就会从服务台拉取一次最新的配置信息,并且更新配置信息(例如我们在服务台上修改了ip_config的配置,刷新以后同时应用中的配置信息也会同步修改)

小节

这里也是秉承了Spring boot的历练,使用配置文件来来配置配置刷新功能(有点绕口),而不用编写具体代码。

快速启动dubbo服务

dubbo在国内是一个比较流行的Rpc框架。如何快速搭建一个dubbo服务呢

第一步:pom文件

名字有点唬人,其实是我自己写的。。

<dependency><groupId>com.netease.ursgroupId><artifactId>srping-boot-dubbo-starterartifactId><version>1.0.2-SNAPSHOTversion>dependency>

第二步:配置文件

一个简单的dubbo 服务者的配置如下:

dubbo:application:name: providerregistry:address:zookeeper://10.165.124.13:2182

当然其实还有很多进阶的配置,也是支持的。

第三步: 注解

使用Dubbo的com.alibaba.dubbo.config.annotation.Service 注解来注册服务提供者。已经完成了dubbo的服务的注册,剩下的就只用关心业务代码了

可选步骤: Filter

Filter是dubbo中比较常见的扩展,如果要实现一个dubbo filter还是比较麻烦的,但是有在这里使用我们的jar以后就很简单了,直接继承一个类就可以了

@ComponentpublicclassProviderFilterextendsAbstractDubboProviderFilterSupport{publicResultinvoke(Invoker invoker, Invocation invocation){
        System.out.println("ProviderFilter");returninvoker.invoke(invocation);
    }
}

总结

可以看出,就算是同时使用了上面3种情况,其实也是不需要编写一行代码,只需要简单的配置即可。

来源:网易工程师-李周

有任何问题欢迎留言交流~


整理总结不易,如果觉得这篇文章有意思的话,欢迎转发、收藏,给我一些鼓励~

有想看的内容或者建议,敬请留言!

最近利用空余时间整理了一些精选Java架构学习视频和大厂项目底层知识点,需要的同学欢迎私信我发给你~一起学习进步!有任何问题也欢迎交流~

Java日记本,每日存档超实用的技术干货学习笔记,每天陪你前进一点点~

声明:本文部分素材转载自互联网,如有侵权立即删除 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容