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

一: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.访问成功,项目搭建完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

听风动

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

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

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

打赏作者

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

抵扣说明:

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

余额充值