springboot配置maven多模块管理开发demo

springboot配置maven多模块管理开发demo

首先了解到maven多模块融合springboot的结构依赖
在这里插入图片描述
创建工程目录
在这里插入图片描述

001-springboot-dubbo-parent创建

首先要设置当前工程为父工程,删除,src目录,并且在pom
文件中,加入指定标签

packaging>pom</packaging>

然后就是,就是继承springboot工程为父工程(创建时添加,也可手动添加),并且进行代码版本的管理(springboot没加入版本的管理)

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>





<!--将自定义的父工程   继承于  springboot的父工程               -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.5</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

<!--指定此工程为父亲工程-->
  <packaging>pom</packaging>




<!--在这个标签中同一设置  每个需要管理依赖的版本号-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

    <!--            dubbo  集成springboot 版本号-->
    <dubbo-spring-boot-starter-version>2.0.0</dubbo-spring-boot-starter-version>
    <!--        zookeeper 注册中版本号-->
    <zkclient-version>0.10</zkclient-version>

    <!--        zookeeper 注册中心版本号-->
    <mybatis-spring-boot-starter-version>2.0.0</mybatis-spring-boot-starter-version>
  </properties>



<!--  管理spring boot工程没有管理的依赖-->
  <dependencyManagement>
    <dependencies>



      <!--            dubbo  集成springboot 所需要的依赖-->
      <dependency>
        <groupId>com.alibaba.spring.boot</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>${dubbo-spring-boot-starter-version}</version>
      </dependency>




      <!--        zookeeper 注册中心-->
      <dependency>
        <groupId>com.101tec</groupId>
        <artifactId>zkclient</artifactId>
        <version>${zkclient-version}</version>
      </dependency>




      <!--mybaties 集成springboot依赖-->
      <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis-spring-boot-starter-version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>






  <groupId>com.zzuli.springboot</groupId>
  <artifactId>001-springboot-dubbo-parent</artifactId>
  <version>1.0-SNAPSHOT</version>





<!--指定 子模块-->
  <modules>
    <module>../002-springboot-dubbo-interface</module>
    <module>
      ../springboot-dubbo-ssm-springboot-zonghe/003-springboot-dubbo-ssm-provider
    </module>
    <module>../springboot-dubbo-ssm-springboot-zonghe/004-springboot-dubbo-ssm-consumer</module>
  </modules>








  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>

  </build>
</project>

002-springboot-dubbo-interface

这是一个maven-java工程,用来存放接口和实体类,并且指定001-springboot-dubbo-parent为父工程,Moel包中的Student通过逆向工程生成的,并且要实现
Serializable接口

package com.zzuli.springboot.model;

import java.io.Serializable;

public class Student implements Serializable {
    private Integer id;

    private String name;

    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

service包时自己定义的接口,实现类在提供者
在这里插入图片描述
pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

<!--  创建标签  将 接口工程  指向001 parent  为父工程-->
  <parent>
    <artifactId>001-springboot-dubbo-parent</artifactId>
    <groupId>com.zzuli.springboot</groupId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../001-springboot-dubbo-parent</relativePath>
  </parent>



<!--  groupId  和  verison  都继承父工程都注释掉或者删除-->

<!--  <groupId>com.zzuli.springboot</groupId>-->
  <artifactId>002-springboot-dubbo-interface</artifactId>
<!--  <version>1.0-SNAPSHOT</version>-->

  <name>002-springboot-dubbo-interface</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

003-springboot-dubbo-ssm-provider

提供者时一个springboot工程,父工程指向001-springboot-dubbo-parent并且在这个工程中实现逆向工程生成 sql映射文件,实体类 还有mapper(dao)接口,并且需要手动配置,dubbo 暴露服务提供给消费者,还有连接redis 和 mysql数据库

目录结构😊
在这里插入图片描述

首先在pom.xml文件中,指定mybaties自动代码生成插加,还有指定sql映射文件资源路径,还要加入 mybaties,dubbo,zookeeper,mysql等依赖,不用添加版本号,已经交给父工程管理了
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>


   <parent>
       <artifactId>001-springboot-dubbo-parent</artifactId>
       <groupId>com.zzuli.springboot</groupId>
       <version>1.0-SNAPSHOT</version>
       <relativePath>../../001-springboot-dubbo-parent/pom.xml</relativePath>
   </parent>

    <!--    groupId  和   version  都集成父工程-->

<!--    <groupId>com.zzuli.springboot</groupId>-->
    <artifactId>003-springboot-dubbo-ssm-provider</artifactId>
<!--    <version>0.0.1</version>-->
    <name>003-springboot-dubbo-ssm-provider</name>
    <description>Demo project for Spring Boot</description>


    <properties>
        <java.version>11</java.version>
    </properties>


<!--    provider所需要的依赖    dubbo mysql redis mybatis zookeeper   接口工程-->


    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
<!--        spring框架起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--            dubbo  集成springboot 所需要的依赖-->
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>

        </dependency>

<!--        zookeeper 注册中心-->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>


        </dependency>

<!--        mysql 驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

<!--mybaties 集成springboot依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>


        </dependency>



<!--spirngboot 集成redis 起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>




<!--        添加接口工程依赖    版本爱后不需要交给 父工程管理 要不然会报错  -->
        <dependency>
            <groupId>com.zzuli.springboot</groupId>
            <artifactId>002-springboot-dubbo-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

    </dependencies>

    <build>
        <!--        手动指定资源文件夹  sql映射文件-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>
        <plugins>

            <!--            mybatis代码自动生成插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.6</version>
                <configuration>
                    <!--                    指定配置文件的位置-->
                    <configurationFile>src/main/resources/generatorMapper.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
            </plugin>

<!--            springboot 项目打包 插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

在指定好generatorMpper.xml路径之后,设置逆向工程并且进行生成。
generatorMpper.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <!--指定连接数据库的JDBC 驱动包所在位置,指定到你本机的完整路径-->
    <classPathEntry location="D:\mysql-connector-java-5.1.46\mysql-connector-java-5.1.46.jar"/>
    <!--配置table表信息内容体,targetRuntime 指定采用MyBatis3的版本-->
    <context id="tables" targetRuntime="MyBatis3">
        <!--抑制生成注释,由于生成的注释都是英文的,可以不让它生成-->
        <commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--配置数据库连接信息-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/springboot?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true"
                        userId="root"
                        password="root">
            <property name="nullCatalogMeansCurrent" value="true"/>

        </jdbcConnection>

        <!--生成model 类,targetPackage 指定 model 类的包名,targetProject 指定
        生成的 model放在idea的哪个工程(如果要生成到其他工程下,要用绝对路径  如下)下面-->
        <javaModelGenerator targetPackage="com.zzuli.springboot.model"

                            targetProject="C:\Users\自定义\IdeaProjects\002-springboot-dubbo-interface\src\main\java">
            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--生成 MyBatis的Mapper.xml文件,targetPackage 指定 mapper.xml文件的包名,targetProject 指定生成的 mapper.xml放在 idea的哪个工程下面
        -->
        <sqlMapGenerator targetPackage="com.zzuli.springboot.mapper"
                         targetProject="src/main/java">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>
        <!--生成 MyBatis的 Mapper接口类文件,targetPackage 指定 Mapper 接口类的包名,targetProject 指定生成的 Mapper 接口放在idea 的哪个工程下面
        -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.zzuli.springboot.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>
        <!--数据库表名及对应的Java模型类名-->
        <table tableName="t_sudent" domainObjectName="Student"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false" />

    </context>
</generatorConfiguration>

完成逆向工程的配置以后,如果以下报错,不用管它
在这里插入图片描述

自动生成代码以后,然后就是实现(自定义)接口 放入到ServiceImpl包中,
并且在这个实现类中 StudentServiceImpl 暴露服务

package com.zzuli.springboot.service.serviceImpl;

import com.alibaba.dubbo.config.annotation.Service;
import com.zzuli.springboot.mapper.StudentMapper;
import com.zzuli.springboot.model.Student;
import com.zzuli.springboot.service.StuentService;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
@Component  //将 service是实现类放入到 spring容器中
@Service(interfaceClass = StuentService.class,version = "1.0.0", timeout=15000)  //暴露服务接口
public class StuentServiceImpl implements StuentService {


//    使用注解给引用类型赋值    并且操作数据库

    @Resource
     private StudentMapper studentMapper;

    @Override
    public Student queryById(Integer id) {
        Student student=studentMapper.selectByPrimaryKey(id);
        return student;
    }
}

然后就是在application-dev.properties中进行配置,数据库配置,dubbo配置
redis配置,修改tomcat的端口号,等等
application-dev.properties

#设置内嵌tomcat端口号
server.port=8081
#设置请求路径的上下文根
server.servlet.context-path=/



#设置连接数据的配置
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver



#设置dubbo的配置
#声明提供者的名称  保证唯一性  一般 和moudle 名称保持一致
spring.application.name=003-springboot-dubbo-ssm-provider
#声明当前服务为  提供者
spring.dubbo.server=true
#指定注册中心   ip地址   +  端口号
spring.dubbo.registry=zookeeper://192.168.98.130:2181



#设置redis的配置
#声明  reids 主机地址
spring.redis.host=192.168.98.130
#声明redis的端口号
spring.redis.port=6379
#声明redis的密码
spring.redis.password=root


application.properties配置文件就是开启application-dev.properties或者application-product.properties配置
application.properties配置

#激活dev文件
spring.profiles.active=dev

最后在入口类加入注解生成mappe包内的接口的实现类,并且开启dubbo配置
Application .class

package com.zzuli.springboot;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "com.zzuli.springboot.mapper")    //扫描mapper包下所有的类并进行实现
@EnableDubboConfiguration            //开器dubbo服务
public class Application {

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

}

004-springboot-dubbo-ssm-consumer

这是一个springboot工程 还要加入thymeleaf 前端模版,在pom.xml文件中加入
dubbo,mybatie. mysql zookepper,等等依赖

目录结构
在这里插入图片描述
首先配置xml 加入相应的依赖,并且,指定父亲工程,接口工程
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>001-springboot-dubbo-parent</artifactId>
        <groupId>com.zzuli.springboot</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../../001-springboot-dubbo-parent/pom.xml</relativePath>
    </parent>

<!--    groupId  和   version  都集成父工程-->


<!--    <groupId>com.zzuli.springboot</groupId>-->
    <artifactId>004-springboot-dubbo-ssm-consumer</artifactId>
<!--    <version>0.0.1</version>-->
    <name>004-springboot-dubbo-ssm-consumer</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>

    </properties>




<!--    消费者  所需要的依赖-->
<!--    dubbo  zookeeper  接口工程  thymeleaf-->

    <dependencies>
<!--        srpingboot框架 集成 thymeleaf 依赖  前端模板引擎-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
<!--            springboot 框架起步依赖-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

<!--        dubbo集成springboot框架依赖-->
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>
<!--        zookeeper  注册中心-->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
        </dependency>

<!--        接口工程-->
        <dependency>
            <groupId>com.zzuli.springboot</groupId>
            <artifactId>002-springboot-dubbo-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

配置application-dev.properties文件,指定注册中心,接收服务,还有,配置上下文根和视图解析器等等


#设置内嵌tomcat的端口号
server.port=8080
#设置请求路径的上下文  根
server.servlet.context-path=/



#配置 dubbo
#声明消费者  服务的名称  保证唯一性
spring.application.name=004-springboot-dubbo-ssm-consumer
#声明  注册中心
spring.dubbo.registry=zookeeper://192.168.98.130:2181



#关闭thymeleaf缓存
spring.thymeleaf.cache=false


#设置视图前后缀
spring.thymeleaf.suffix=.html
spring.thymeleaf.prefix=classpath:/templates/


#设置 字符编码
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
server.servlet.encoding.charset=UTF-8

application.properties配置文件就是开启**application-dev.properties****配置

#激活dev文件
spring.profiles.active=dev

配置控制器类,并且接收dubbo暴露的接口

package com.zzuli.springboot.web;

import com.alibaba.dubbo.config.annotation.Reference;
import com.zzuli.springboot.model.Student;
import com.zzuli.springboot.service.StuentService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;


import javax.annotation.Resource;

@Controller  //将控制器实现了 放入到 spring容器中
public class StudentController {


//    通过注解对引用类型进行赋值
   @Reference(interfaceClass = StuentService.class,version = "1.0.0",check = false)
    private StuentService stuentService;


    @RequestMapping("/student/detail/{id}")
    public  String student(@PathVariable("id") Integer id, Model model){

        //通过学生的id查询  详细信息


        System.out.println(stuentService+"=============");

        Student student =stuentService.queryById(id);

        //将获取到的对象放入到 请求领域中
        model.addAttribute("student",student);
     return "studentDetail";

    }

}

然后再创建studentDetail.html文件再 resources资源文件包下的templates

<!DOCTYPE html>
<!--声明以下标签  获取后台的数据-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

学生编号:<div  th:text="${student.id}"></div>
学生年龄:<div  th:text="${student.age}"></div>
学生姓名:<div  th:text="${student.name}"></div>


</body>
</html>

最后一步

打开linux,关闭防火墙,开启redis服务------>zookeeper------->提供者---->消费者

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值