栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

如何创建Maven聚合项目(构建微服务项目)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何创建Maven聚合项目(构建微服务项目)

1.在idea中构建聚合工程,父工程和子工程都是module,并在父工程的pom文件中,做如下的操作:

1.1pom文件中,配置统一的版本管理


        
            
            
                org.springframework.boot
                spring-boot-dependencies
                2.3.2.RELEASE
                pom
                import
            

            
            
                org.springframework.cloud
                spring-cloud-dependencies
                Hoxton.SR9
                pom
                import
            

            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.2.6.RELEASE
                pom
                import
            
        
    

1.2pom文件中,添加所有子工程都需要的公共依赖,避免子工程中重复引入依赖,主要包括lombok和test依赖

    
        
        
            org.projectlombok
            lombok
            provided
        
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.jupiter
                    junit-jupiter-engine
                
            
        
        
    

1.3规范所有子工程的编译和运行版本

    
        
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                3.8.1
                
                    8
                    8
                
            
        
    

1.3.1为什么要配置jdk编译统一的版本

那为什么要配置统一的编译和运行版本呢,因为jdk版本是向下兼容的,我们使用高版本可以编译低版本的.java文件,但是如果在某个子工程中使用了高于编译版本的功能,就没法编译成.class文件,那就没法运行了

2.测试一下各个服务的请求是否正常

事先需要引入依赖


            org.springframework.boot
            spring-boot-starter-web
        

然后写一个简单的controller测试一下web请求

@RestController
public class HelloController {
    @GetMapping("/hello/{msg}")
    public String sayHello(@PathVariable String msg) {
        return "sayHello:" + msg;
    }
}

成功了,那如何实现各个模块之间的通信呢?

2.1在调用方引入工具工程的依赖


            com.jt
            sca-common
            1.0-SNAPSHOT
        
import common.MyUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello/{msg}")
    public String sayHello(@PathVariable String msg) {
        return MyUtils.sayHello(msg);
    }
}

好了,调用成功了!但将来如果要实现这样恶的需求:有两个服务分别是订单服务和支付服务,订单在支付流程中需要调用支付服务的接口,而不是简单的调用方法,这就是我们接下来要实现子工程之间的服务调用了,这时我们就需要使用nacos了,我们先来看一下nacos的定义,看看他是用来干什么的

3.Nacos微服务配置中心

3.1先贴上一个noces版本的要求说明,因为nacos的版本要看springcloud的版本,其是相互对应的

版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub

3.2修改默认sql,在开头加上这段就可以了,之后在导入当前的sql数据库

DROP DATAbase IF EXISTS `nacos_config`;
CREATE DATAbase `nacos_config` DEFAULT character set utf8mb4;
SET names utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
USE `nacos_config`;

3.3启动nacos

引言:好了我们现在有了这几个子工程了,接下来我们需要有一个统一的配置管理中心去管理各个子工程(服务)之间的通信了

3.3.1我们需要在启动来中定义一个@Bean用来全局注册一个restTemplate,这个restTemplate可以用来访问别的服务的接口。同时,如果我们的被调用方有多个服务实例的话,可以在restTemplate上加上@Balanced注解,并使用以下方式实现负载均衡

@GetMapping("/consumer/doRestEcho3")
public String doRestEcho03(){
    String url=String.format("http://%s/provider/echo/%s","sca-provider",appName);
    //向服务提供方发起http请求,获取响应数据
    return loadBalancedRestTemplate.getForObject(
            url,//要请求的服务的地址
            String.class);//String.class为请求服务的响应结果类型
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/345006.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号