spring框架和mybatis等持久化框架(实战如何用SpringMybatis快速搭建1个微服务)
spring框架和mybatis等持久化框架(实战如何用SpringMybatis快速搭建1个微服务)例如我们有一个ip白名单,key的名字为ip_config(如上图)可以看出,我们的配置类型有传统的JSON PROPERTIES YAMLl 还有自定义的类型,如 LIST <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.3.RELEASE</version> </dependency> <dependency>
概述面向服务的架构(SOA)好处自然不必多说,把原来一个庞大的应用中不同的功能单元,拆分成一个一个的微服务,并通过Rpc调用(如 dubbo 或者RESTful)。 达到“高内聚,低耦合”的效果。
Spring Boot设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用spring boot来快速搭建一个微服务是十分方便的(相比于传统的spring框架)
最近整理的Java架构学习视频和大厂项目底层知识点,需要的同学欢迎私信我【资料】发给你~一起学习进步!
Spring bootSpring 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.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.28</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
</dependencies>
第二步 配置文件
server:
port: 8181
spring:
datasource:
url: jdbc:mysql://10.160.247.90:9306/realname
username: realname
password: realname
driverClassName: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
mybatis:
mapperLocations: classpath:mapper/*.xml
type-handlers-package: com.netease.urs.realname.dao
type-aliases-package: com.netease.urs.realname.entity
configuration:
map-underscore-to-camel-case: true
第三步 启动应用
是的,经过以上配置就可以启动一个Spring Boot的应用。(Mybatis有jar包可以直接生产Mapper类和xml文件,就不再赘述)
@SpringBootApplication
public class Boot {
public static void main(String[] args) {
new SpringApplicationBuilder().build().run(Boot.class args);
}
现在反过来看看第二步,其实Spring boot已经帮我们生产了DataSource,Mybatis也通过配置文件帮生成了SqlSessionFactory等类。其实反过来看以前的代码,是不是其实很多配置信息都是直接copy过来,稍微修改一下就可以用了。spring boot就是把关键的部分由我们自己通过配置文件来配置,根据这些关键配置信息就可以自动注入相关的Bean。
接入urs服务台配置刷新第一步: pom依赖 <dependency>
<groupId>com.netease.urs</groupId>
<artifactId>urs-mg-property-spring-boot</artifactId>
<version>1.1.9-SNAPSHOT</version>
</dependency>
第二步:在服务台管理配置信息
Urs服务台的功能很简单,就是根据不同的应用,管理一组key-value对。然后提供一个url,就把同一个应用下的key-value用json格式返回。
可以看出,我们的配置类型有传统的JSON PROPERTIES YAMLl 还有自定义的类型,如 LIST
例如我们有一个ip白名单,key的名字为ip_config(如上图)
@Component
public class IpFilter implements Filter {
@RefreshValue(propertyName = "ip_config")
private List<String> ipConfigs;
...
ps:注解注入只是更新配置信息的一种方式,如果有更定制化需求,还可以通过实现一个接口,通过编写代码来更新。
第四步: 配置文件urs:
property:
refresh-token: abcdefg
refresh-url: http://xxx.xxx.xxx.xxx/api/getConfigs.json?path=urs-mg/spring-boot-quick-start
listener-port: 8182
listener-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.urs</groupId>
<artifactId>srping-boot-dubbo-starter</artifactId>
<version>1.0.2-SNAPSHOT</version>
</dependency>
第二步:配置文件
一个简单的dubbo 服务者的配置如下:
dubbo:
application:
name: provider
registry:
address: zookeeper://10.165.124.13:2182
当然其实还有很多进阶的配置,也是支持的。
第三步: 注解使用Dubbo的com.alibaba.dubbo.config.annotation.Service 注解来注册服务提供者。已经完成了dubbo的服务的注册,剩下的就只用关心业务代码了
可选步骤: FilterFilter是dubbo中比较常见的扩展,如果要实现一个dubbo filter还是比较麻烦的,但是有在这里使用我们的jar以后就很简单了,直接继承一个类就可以了
@Component
public class ProviderFilter extends AbstractDubboProviderFilterSupport {
public Result invoke(Invoker<?> invoker Invocation invocation) {
System.out.println("ProviderFilter");
return invoker.invoke(invocation);
}
}
总结
可以看出,就算是同时使用了上面3种情况,其实也是不需要编写一行代码,只需要简单的配置即可。
来源:网易工程师-李周
有任何问题欢迎留言交流~
整理总结不易,如果觉得这篇文章有意思的话,欢迎转发、收藏,给我一些鼓励~
有想看的内容或者建议,敬请留言!
最近利用空余时间整理了一些精选Java架构学习视频和大厂项目底层知识点,需要的同学欢迎私信我发给你~一起学习进步!有任何问题也欢迎交流~
Java日记本,每日存档超实用的技术干货学习笔记,每天陪你前进一点点~