Java项目架构设计

传统项目架构设计问题

说明:因为单体项目将全部的模块都写到了一块儿,未来若是其中一个模块出了问题,将致使整个项目不能正常的运行!
image.pngjava

分布式架构设计

分布式介绍

因为传统项目致使各个模块之间的耦合性较高,因此须要采用分布式的思想将项目进行拆分。
核心理念:化整为零 将项目按照某些特定的规则进行拆分mysql

按照功能模块模块拆分

说明:因为单体项目的耦合性较高,全部须要按照功能模块进行拆分【下降系统架构的耦合性
image.pngweb

按照层级拆分

在按照模块拆分的基础之上,将项目按照层级拆分,将粒度控制的更加的具体。分工更加的明确,有效的提升软件的开发效率!
image.pngredis

分布式思想带来的问题

分布式思想jar包维护

image.png

分布式思想中API管理

image.png

建立父级工程

建立项目

image.png

编辑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>
    <groupId>com.jt</groupId>
    <artifactId>jt</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--modules表示当前的项目包含了多少个子级项目,
 一个modules就是一个子级项目。
 注意:若是修改了项目的名称记得必定要修改modules标签里面的名称-->
 <modules>
        <module>jt-common</module>
        <module>jt-manage</module>
    </modules>
    <!--父级工程的打包类型-->
 <packaging>pom</packaging>
    <!--引入springboot的jar文件 springboot父级项目-->
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
 </parent>
    <!--2.引入属性的配置-->
 <properties>
        <java.version>1.8</java.version>
        <!--跳过测试类打包-->
 <skipTests>true</skipTests>
    </properties>
    <!--3.在父级项目中添加jar包文件-->
 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--springBoot数据库链接 -->
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--spring整合mybatis-plus -->
 <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <!--springBoot整合JSP添加依赖 -->
 <!--servlet依赖 -->
 <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>
        <!--jstl依赖 -->
 <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <!--使jsp页面生效 -->
 <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
       <!--支持热部署-->
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <!--添加httpClient jar包 -->
 <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <!--引入dubbo配置 -->
 <!--<dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency>-->
 <!--添加Quartz的支持 -->
 <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>-->
 <!--spring整合redis -->
 <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
        <!-- 引入aop支持 -->
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
    </dependencies>
        <!--父级工程只是项目的管理者,不会在其中编辑代码,因此不要添加build-->
</project>

编辑工具API项目(common)

建立项目

image.png

导入已准备好的src文件

image.png

定义manage项目

建立项目

image.png

编辑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>
   <artifactId>jt-manage</artifactId>
   <!--指定打包方式-->
 <packaging>war</packaging>
   <!--指定父级项目-->
 <parent>
      <artifactId>jt</artifactId>
      <groupId>com.jt</groupId>
      <version>1.0-SNAPSHOT</version>
   </parent>
   <!--2.添加依赖信息-->
 <dependencies>
      <dependency>
         <groupId>com.jt</groupId>
         <artifactId>jt-common</artifactId>
         <version>1.0-SNAPSHOT</version>
      </dependency>
   </dependencies>
   <!--3.添加插件-->
 <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
</project>

导入准备好的manage的src文件

image.png

修改YML配置文件

image.png

启动项配置

image.png

访问测试

image.png

项目默认页面跳转说明

步骤:
1.http://localhost:8091/
2.默认机制:http://localhost:8091/index请求...被springBoot程序优化过了。
3.利用默认工具API
WelcomePageHandlerMapping : Adding welcome page template: index动态的发起的/index请求,以后配合视图解析器造成动态的页面路径:/WEB-INF/views/index.jspspring

注意事项:
当使用SpringBoot程序时,能够经过缺省值访问,可是系统的首页名称必须为index.xxxxsql

相关文章
相关标签/搜索