本篇博客内容较多,请大家仔细阅读总纲
前面有学习过用springboot开发项目,使用springboot开发项目的好处在于能够快速的开发单体项目,很多框架整合无需配置,极大的提高了开发效率。使用springboot开发项目依然属于传统的开发模式,所有的代码都写在一个工程内。
Mvc模式相信已经被大家所熟知。Mvc模式是为了使的代码层次分明,便于维护,提供代码的健壮性;当项目过于臃肿的话,mvc模式的项目依然难于维护。
而springcloud作为分布式服务技术的代表,在我看来其实就是对mvc模式的一种延伸。将整个项目的model层、dao层、service层、controller层等等进行拆分独立出来成为一个单独的项目,解决由于项目过于臃肿不便于维护所带来的一系列问题。
最简单的微服务架构会有四个工程
父工程:microservice
通用模块(M):microservice-common
服务提供者(C):microservice-student-provider-1001
服务消费者(C):microservice-student-consumer-80
微服务架构注意点:
1、springboot、springcloud版本在父工程定义;
2、由于通用模块无需操作数据库,springboot启动默认会读取数据库,所以得添加以下注解 @SpringBootApplication(exclude={DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class});
3、分布式jpa需要在启动类上添加@EntityScan("com.javaxl.*.*");
4、消费者需要添加配置类获取org.springframework.web.client.RestTemplate,springcloud底层是通过RestTemplate来调用提供者的服务的。
传统项目拆分成微服务架构图
父工程是一个maven项目,一般创建方式即可,父工程的主要用途是锁定pom依赖包版本。由于springcloud2X停止更新,这里我们采用稳定的低版本,配套的springboot版本为1x版本。
Pom.xml配置如下
通用模块主要存放实体类、工具包等被整个微服务框架所使用的代码。创建一个简单的springboot模块即可。相关代码如下
创建一个简单的springboot模块,这里服务提供者需要操作数据库并且被浏览器所访问,固需要添加相关配置如下
MicroserviceStudentProvider1001Application.java
StudentProviderController.java
服务消费者主要是通过restful api来调用提供者的接口,固不需要不需要操作数据库,相关配置如下
MicroserviceStudentConsumer80Application.java
StudentConsumerController.java
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有