最近在学习微服务的过程中,需要将之前学到的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
。显而易见,java
wenjianjia 变成原有项目的样子。
如果出现想启动类上边画了个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包并引入到项目中