最近在学习微服务的过程中,需要将之前学到的SpringBoot项目重构。
个人在学习过程中参考 慕课网小马哥的 Spring Boot 2.0深度实践-初遇Spring Boot 这门课程是免费的。如果博客阐述不当,可以去看看小马哥的视频,大佬绝对把你教会。
1. what?(什么是重构)
这是借用下百度的定义
重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
个人理解:举个例子:保存用户信息的过程中,Controller层负责接收用户信息,Service层负责对用户信息进行处理,Dao层负责将用户信息保存到数据库中。当然系统中不仅只有保存用户信息的业务操作。还有用户信息修改,用户注销等等,越来越多的业务出现,系统就会变得很臃肿。
2. why? (为什么要重构)
我们将系统划分为三个模块,表示层web,持久层persistence,模型层model。我们将项目启动的类,与用户进行数据交互的逻辑放在web表示层,将与数据库交互的逻辑放在persistence持久层,将保存信息的实体保存在model模型层。这样就显得业务划分和结构就变得很清晰
3. how? (怎么样重构)
首先将pom.xml中的packaging改成pom

创建项目中的模块。右键点击项目 -> New -> Module

显示如下页面。点击Next

填写需要创建模块的名字。继续点击Next

如下图所示,创建好的模块的pom.xml中,<parent>是依赖于项目的pom.xml

将系统的业务代码迁移到相应的模块中,会发现模块中的文档样式是不一样的。这时候需要进行一些调改。

进入到project structure。点击mian中的java,在点击Mark as中的Sources。显而易见,javawenjianjia 变成原有项目的样子。

如果出现想启动类上边画了个X的样子,还是选择点击右边的绿色三角的话。

你将会看到下边的提示 错误: 找不到或无法加载主类 FirstRefactorDemoApplication。这时得找到项目的启动类进行重新启动

启动项目:找到web模块中的启动类,右键+Run启动项目。
按照自己的要求将项目中的接口,实体类等迁移到各个模块之后,你是否会发现下面这种情况。项目中满屏都是红色的,那是因为,这些实体类在迁移到各个模块之后,他们之间还没有任何联系,import导入的依赖是找不到原来的依赖的。解决办法:通过配置的方式,将各个模块联系起来。

<dependencies>
  <dependency>
    <groupId>com.xh</groupId>
    <artifactId>model</artifactId> 
    <version>0.0.1-SNAPSHOT</version>
  </dependency>
</dependencies>artifactId:所需要依赖的模块名称
groupId和version:可参照pom.xml文件中的parent中的配置。
注:每次修改pom.xml文件都必须在文件中右键+maven+reimport进行重新刷新
项目打包
打开idea的终端命令行Terminal。运行如下命令
$ mvn -Dmaven.test.skip=true -U clean install发现这时候项目打包出问题,显示repackage failed: Unable to find main class。无法找到主类(main class)

如果你的项目是多个模块的项目,则需要在包含启动类的(web)模块的pom.xml中添加如下配置。
这块配置仅针对多模块的项目配置。
<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
+      <configuration>
+        <mainClass>com.xh.product.ProductApplication</mainClass>
+      </configuration>
    </plugin>
  </plugins>
</build>在spring-boot-maven-plugin下配置configuration中的配置。mainClass中配置项目的启动类的路径。
配置完成之后,则再次执行上边的打包命令。打包好的jar默认会放在电脑配置的仓库中。
引用自定义生成的jar包
如需要将打包好的jar给其他项目进行调用,则需要在其他项目pom.xml中引入。可参照我的进行配置。配置完成刷新pom.xml文件
<dependency>
  <groupId>com.xh</groupId>
  <artifactId>product-client</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</dependency>配置完成之后,再次刷新pom.xml文件。这时项目就会根据下图的过程找到你的jar包并引入到项目中

 
                     
                     
                            
                            