Maven多模块项目讲解,以及在idea上如何使用SpringBoot框架搭建

SpringBoot多模块项目开发(Maven多模块项目) 在需要统一版本的位置,使用 ${自定义标签名} 引用声明的版本号。另外,自定义标签声明数据的配置并不是只能用于声明依赖的版本号,凡是需要统一声明后再引用的场合都可以使用,例如:统一配置项目构建的源码的字符集格式。xml复制代码。 阅读详情

一:Maven多模块项目

1.Maven多模块项目
    
    2.解决项目中出现多个相同的jar包 和 service接口 以及 实体类对象
    
    3.将以上相同的提取成一个项目来维护管理,然后其他需要用到则只要引用jar包即可
    
    4.将springboot+dubbo框架项目进行拆分
    
    5. 生产者  消费者   接口项目   实体类和jar
    
        5.1 生产者项目创建方式springboot项目方式创建
        
        5.2 消费者项目创建方式springboot项目方式创建
        
        5.3 接口项目为maven jar项目进行创建 ,然后生产者和消费者引用jar项目即可
        
        5.4 将实体类和公用jar为一个项目进行创建 ,然后生产者和消费者引用jar
    
    6. Maven多模块需要创建一个父级项目来管理子模块
        
        6.1 父模块项目什么都没有,只有一个pom文件

 

二:搭建过程

       1.首先搭建父级项目:

        1.1 FIle --》New--》projects--》Maven 勾选Create From archeType --》选择 quick start
        1.2 填写 group Id 和 那个 id 点next
        1.3 注意:Maven地址必须为自己的,选择maven setting文件
        1.4 创建完可以将src目录删除,保留pom文件

 

       这个只是作为管理子模块使用只保留pom
       创建父级项目为 File--》New--》Projects
        需要添加子模块关联关系
        <modules>
          <module>dubbo-provider</module>
          <module>dubbo-consumer</module>
          <module>dubbo-service-api</module>
          <module>dubbo-common</module>
        </modules>

 

 2.创建子模块,选中父级项目右击--》new--》Module   创建生产者和消费者,生产者如果要连接数据库记得选对应的服务。

        创建子模块项目名称
        右击父级项目选择New--》Module
             2.1公共项目:dubbo-common
             2.2service接口: dubbo-service-api
             2.3生产者: dubbo-provider
             2.4消费者:  dubbo-consumer

生产者:

消费者:

3.创建common和service api项目选择Maven quick start,maven项目。

包结构创建完毕

             公共项目:dubbo-common
             service接口: dubbo-service-api
             生产者: dubbo-provider
             消费者:  dubbo-consumer

common和service-api创建方式为Maven quick Start
provider和consumer创建方式为spring initializr

4.创建service-api和common的依赖关系,在service-api的pom.xml文件中引入核心jar包

        <!-- 创建依赖关系,映入子模块儿 -->
        <dependency>
            <groupId>com.jk</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

5.同理在dubbo-consumer和dubbo-provider的pom.xml文件中引入service-api依赖关系

        <!--引入service-api -->
        <dependency>
            <groupId>com.jk</groupId>
            <artifactId>service-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

6.在父级项目的pom.xml文件中添加子模块儿关联关系

  <modules>
    <module>service-api</module>
    <module>common</module>
    <module>dubbo-provider</module>
    <module>dubbo-consumer</module>
  </modules>

7.写一个方法测试一下

common中创建一个实体Bean,记得要序列化

package com.jk.model;

import java.io.Serializable;

public class User implements Serializable {

    private static final long serialVersionUID = -8843334204639736649L;
    private Integer userId;
    private String userName;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    @Override
    public String toString() {
        return "User{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                '}';
    }
}

并且在它的pom.xml文件中引入核心Jar包

        <!--dubbo 依赖 -->
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>
        <!-- zookeeper client依赖 -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>

8.在dubbo-provider生产者的配置类中配置

#配置dubbo服务提供者
#服务名称
spring.dubbo.application.name=provider
spring.dubbo.server=true
#注册中心地址
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo 协议
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880

9.在dubbo-consumr消费者的配置类中配置

#为防止和生产者端口号冲突
server.port=8081

#配置dubbo消费者
spring.dubbo.application.name=consumer
#配置注册中心
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo协议
spring.dubbo.procotol.name=dubbo
spring.dubbo.procotol.port=20880
#消费者启动检测生产者是否已启动,当值为true时才会检测,默认为true
spring.dubbo.consumer.check=false
#roundrobin轮询机制
#random #随机机制
#leastactive #最少活跃调用数机制
spring.dubbo.reference.loadbalance=roundrobin

10.在service-api中创建一个接口

package com.jk.service;

import com.jk.model.User;

public interface UserService {

    User saveUser(User user);
}

11.在dubbo-provider生产者中创建UserServiceImpl实现类

package com.jk.service;

import com.alibaba.dubbo.config.annotation.Service;
import com.jk.model.User;
import org.springframework.stereotype.Component;

@Service(interfaceClass = UserService.class)
@Component
public class UserServiceImpl implements UserService{
    @Override
    public User saveUser(User user) {
        user.setUserId(18);
        return user;
    }
}

12.在dubbo-comsumer消费者中创建controller层接收前台传过来的值

package com.jk.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.jk.model.User;


import com.jk.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
//ResponseBody+Controller注解的结合
public class UserController {

    @Reference
    private UserService userService;

    //@PostMapping()
    @GetMapping("/saveUser/{userName}/{age}")  // result风格(指定请求方式)
    public User saveUser(@PathVariable String userName , @PathVariable Integer age){
        System.out.println("------------------------"+age+"--------------------");
        User user = new User();
        user.setUserName(userName);
        user = userService.saveUser(user);
        return user;
    }
}

13.在生产者和消费者项目的启动类加上注解@EnableDubboConfiguration @ComponentScan("com.jk.*")

package com.jk.app;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@EnableDubboConfiguration
@ComponentScan("com.jk.*")
public class DubboProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboProviderApplication.class, args);
    }

}

14.如果不连数据库请删掉位于dubbo-provider生产者中的mysql和mybatis的jar包否则启动报错

15.启动项目访问接口

16.访问成功,项目搭建完毕。

Maven环境下构建多模块项目 如果没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖, 对于编译,测试,运行都有效。使用此依赖范围的Maven依赖,对于编译和测试有效, 但在运行时无效。使用此依赖范围的Maven依赖,对于测试和运行有效, 但在编译代码时无效。Maven会解析各个直接依赖的POM,将那些必要的间接依赖,以传递性依赖的形式引入到当前项目中。1. groupId, artifactId, version : 依赖的基本坐标, 对于任何一个依赖来说,基本坐标是最重要的, Maven根据坐标才能找到需要的依赖。 阅读详情

相关推荐

Maven自定义脚手架(多module模块)+自定义参数

脚手架创建的步骤如下,先创建一个工程,把常用的代码写好,进入工程根目录,进行如下操作:打包模板进入模板目录,修改文件配置如果想让文件中的替换变量生效,需要先修改META-INF.maven/archetype-metadata.xml将对应目录或文件增加 filtered=“true”再使用变量替换对应文件内容部署本地上传仓库mvn deploy下面用一个多模块的项目做演示,包含xml文件,yml文件,和其他文件。

专治八阿哥的孟老师 4601

使用 Maven 构建多模块项目

一、概述 在本教程中,我们将学习如何使用 Maven 构建多模块项目。 首先,我们将讨论什么是多模块项目,并看看遵循这种方法的好处。然后我们将设置我们的示例项目。有关 Maven 的良好介绍,请查看本教程。 2. Maven的多模块项目 多模块项目由管理一组子模块的聚合器 POM 构建。在大多数情况下,聚合器位于项目的根目录中,并且必须具有pom类型的打包。 子模块是常规的 Maven 项目,它们可以单独构建,也可以通过聚合器 POM 构建。 通过聚合器 POM 构建项目,每个具有与p.

allway2的博客 8275

IDEA创建Maven项目(使用springboot框架)

一、Maven 1.1.什么是Maven Maven 是专门用于构建和管理Java相关项目的工具,Maven是意第绪语,依地语(犹太人使用的国际语),表示专家的意思,所以用Maven管理Java 项目,你就是专家了 。 1.2.Maven的主要用处 maven都有一个相同的项目结构:有一个pom.xml 用于维护当前项目都用了哪些jar包(在pom.xml中增加的jar包会根据maven核心配置文件setting中指定的仓库去找jar包,如果没有就去配置文件中指定的下载目录下载jar包);所有的ja

qq_20411471的博客 8894

IDEA SpringBoot多模块项目搭建详细过程

项目源码: 百度网盘: https://pan.baidu.com/s/1oIAr771eOZzxlVsW8gbjJA 提取码: x3zt 优快云下载:https://download.csdn.net/download/zcf980/12013114 关于项目打包的问题,在文章的最后已给出解决方案(上面的源码也已做了更新):更新时间2019-12-...

ZCF1024 的后宫 8万+

28个步骤快速搭建基于SpringBoot的Maven多模块Java Web项目

28个步骤快速搭建基于SpringBoot的Maven多模块Java Web项目, 手把手教小白一步一步地快速搭建基于Springboot的maven多模块JavaWeb项目,使用idea编译器搭建。

dalaoliang886的博客 9549

如何借助Idea创建多模块的SpringBoot项目

springmvc项目,一般会把项目分成多个包:controler、service、dao、utl等,但是随着项目的复杂性提高,想复用其他一个模块的话,因为是包的形式,剥离出来会比较困难,耦合性有点强,常用的方法就是复制代码修改,但是这样会做很多无用功与增加出错几率。 springboot多模块简单来说,就是把按包分模块的模式,借助maven升级到jar的方式,抽象性更加强了,同时也能方便项目中所依赖的第三方Jar包的版本的统一管理。

giser@2011的博客 5132

一篇解决springBoot+Maven多模块项目

首先:使用maven多模块项目的好处? 1、代码复用 1)比如一个项目的前台服务和后台管理系统,想让他们单独运行,如果划分成两个单独的项目的话,实体类、service、dao等就会产生重复,以前的做法是直接复制过去,但实体类要是改动某些属性的话,两个系统都要改。但如果我们把公共的部分单独提取成一个模块,把前后台系统聚合一块,引用这个公共的模块,就可以避免这个问题。 2、更好的分工 每个人负责一个模...

no problem的博客 5674

如何基于Maven使用SpringBoot搭建多模块项目

Hello,大家好,我是Stefan,今天为大家带来如何基于Maven使用SpringBoot搭建多模块项目。 一、搭建背景 Maven多模块架构方式适用于大中型及以上的项目,为什么这么说呢,因为就一般而言小型项目和中型项目涉及到的功能点不会很多,其中涉及到的业务逻辑不会很复杂,往往很容易实现;二大中型项目以及大型项目,尤其是需要使用微服务架构的项目往往涉及到的功能点非常...

Steafan_ 1944

如何在idea中搭建SpringBoot项目

在软件开发的浩瀚海洋中,Spring Boot以其独特的魅力和强大的功能,为开发者开辟了一条通往高效、便捷开发之路。本文旨在通过详实的步骤与实用的技巧,引领您快速搭建起一个Spring Boot项目,让您轻松踏上Java开发的快车道。

2401_84636088的博客 1万+

Eclipse搭建基于Springboot的Maven多模块工程

  1,写在前面的话 1.1,我想说点啥          公司提供接口服务的项目要进行重构,主旨是构建基于Springboot的Maven多模块聚合工程.因之前接触Springboot较少,于是就在网上查阅资料,查了好多博客发现大部分都是写用idea构建的,部分用Eclipse搭建的博客感觉又不是那么合我心意,对于用惯Eclipse的程序员来说也懒得再换开发工具了.于是根据自己的实践,在此...

u013642372的博客 9059

idea环境下springboot项目父子多模块打包部署过程讲解

idea环境下springboot项目父子多模块打包部署过程讲解 我们以一个使用idea构建的项目为例为大家讲解如何对springboot的父子模1块工程进行打包部署; 1.项目工程结构 父工程:ewe-hr 子模块:core 不依赖其它模块 子模块:user依赖core 子模块:hr依赖user和core,并且hr模块是我们启动类application所在的模块 2.各个子模块的pom文件的配置...

weixin_41251135的博客 1万+

IDEA构建SpringBoot多模块项目

使用IDEA搭建springboot多模块微服务项目

xc9711的博客 4133

IDEA 搭建 SpringBoot 项目之配置 Maven

说明:本地仓库用于存放 Maven 下载的所有的包,我们需要创建一个文件夹作为本地仓库来存放这些包。这里的 “repository” 是我自己创建的文件夹,你完全可以取其他名字,此外也可以存放在其他路径下。注意:你可能发现我图中写的是 “central”,而原配置写的是 “public”,因为此处有雷?说明:之所以在启动页打开设置,是因为只有这么做,设置内容才是对所有项目都生效的。说明:由于你和我的 Maven 安装路径不同,因此这里的路径请视具体情况而定。说明:上述配置代码源自阿里云的官方指南(

m0_74824954的博客 1724

IDEA 创建SpringBoot多级Maven父子项目

IDEA 创建SpringBoot多级MAVEN父子项目一、环境准备1、JDK安装配置2、MAVEN安装配置3、IDEA破解版二、项目搭建1、创建顶级Maven项目附: 一级项目完整`pom.xml`配置2、创建二级Maven子项目附: 二级子项目完整`pom.xml`配置3、创建三级Springboot子项目附: 三级子项目完整`pom.xml`配置如何改变文本的样式插入链接与图片如何插入一段漂...

qq_39870079的博客 1万+

IDEA 搭建springboot多模块项目

为什么要建多模块项目?随着业务发展,项目参与人员变多,业务变复杂,所有的代码都在一个结构下,就会变得不直观,同时耦合度可能比较高。另外一个问题就是,在多服务的场景下,要给外部服务提供接口了(比如要提供对外的dubbo接口),如果是单体结构,只能整个模块打个jar出去,不优雅,不然还得重新做多模块拆分,麻烦。还有一个问题,可能一些通用的类在好几个工程里都有,多模块结构可以把通用的类放到一起,打包出去给其它服务用。所以,对于可预见未来的中大型项目,最好是刚开始就直接多模块搭建,对于小型项目,单结构即可

wk的专栏 3087

(十)安卓开发中的Activity之间的通信使用详解

下面将结合代码和具体在 Android 开发中,Activity 之间的通信是非常常见且核心的功能之一使用场景,详细讲解这几种方式。

cuijiying的博客 1280

SpringBoot创建maven多模块项目(实战)

SpringBoot创建maven多模块项目(实战) 工作中一直都是一个人奋战一人一个项目,使用maven管理,看这个也挺好,但是总感觉没有充分发挥maven的功能,于是研究了一下这个,网上关于这个的文章很多,虽然不是很好,但我从中收获了很多,在这集百家所长,写一份实战记录,大家跟着我一块做吧! 声明:构建多模块不是最难的,难点是如果把多模块打包成一个执行jar。......

西魏陶渊明的博客 7万+

告别手动连接!一键搞定Mumu模拟器与Android Studio的ADB配置

本文详细介绍了如何通过编写自动化脚本,一键完成Mumu模拟器与Android Studio的ADB连接配置。告别繁琐的手动命令输入,该脚本能智能检查环境、判断连接状态并自动处理端口转发,显著提升Android开发者的调试与测试效率。

yog99的博客 495

快速上手:使用 IDEA 和 Maven 搭建 SpringBoot 项目的完整指南

一、简介 IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档...

蜗牛的博客 3万+

Ubuntu终端接入Codex:一行脚本搞定AI编程助手安装与配置

在开发者日常工作中,命令行终端是最高频的操作环境,而AI编程助手的出现正在改变传统的编码方式。通过将大模型能力与终端工具链结合,开发者无需切换窗口即可完成命令查询、代码生成、项目理解和自动执行等任务。Ubuntu作为服务器和开发机的主流系统,搭配Node.js生态和API Key认证,即可在本地闭环运行AI助手。本文从环境准备、密钥配置、权限管理到自动化脚本封装,系统拆解在终端中接入Codex的完整流程,并分享高频用法与实测排障经验,帮助开发者安全、高效地让AI融入命令行工作流。

weixin_29061041的博客 321

洛谷 P5736 【深基7.例2】质数筛

题目描述 输入 n(n\le100)n(n≤100) 个不大于 100000 的整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。 输入格式 无 输出格式 无 输入输出样例 输入 #1 复制 5 3 4 5 6 7 输出 #1 复制 3 5 7 板子题,使用一下线性筛 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using n

qq_37978559的博客 1117
上一篇: 使用Dubbo分布式框架,结合SpringBoot框架+Zookeeper,实现生产者消费者的maven父子级结构项目。
下一篇: SpringCloud框架讲解,以及如何在idea上搭建一个简单的SpringCloud框架并使用Ribbon技术
听风动
博客等级 码龄8年 63粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值