子模块创建
- 后端管理
- 将长链接转化为短链接,并进行访问量统计
- 网关
在创建子模块前,首先要将其设置为<packaging>pom</packaging>
,这段代码意味着shortlink-all
的父模块不参与任何打包成jar包的行为。springboot
会默认自动打包,但此模块仅用于规约,因此不需要打包。
三个子module创建
后端管理:创建new module,一般后管都叫做admin
。若模块名和坐标不一致,则会同时显示二者。idea会自动把module加入到父模块的pom
文件中。然后测试maven能否打包,选择clean、package用maven build。
短链接应用:命名为project,无用的代码可以删除。
网关:命名为gateway,刷新并打包。
后管相关
首先开发后管中的分组功能,分别创建包目录controller、service、dao(持久层),dao层又分为mapper(用来做关联,承接应用程序,以及mysql的驱动)和entity(实体),以及还有一些枚举、静态变量,统一放到admin的common目录下。common目录下包含enums(enum是枚举关键字,不能用作包名)和constant。由于admin要通过远程方式调用project,因此还有一层remote。remote中除了fin的接口外,还有一层dto。此dto专门用于remote。还需要一层dto,来接受controller产生的请求参数以及返回参数。以及util,用于封装。
打包后,在admin和project中的pom加入如下代码(gateway在最底层工作靠后的位置):
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
之所以不用指定版本号,是因为在父依赖中已经导入了所有的版本号(dependency management)。
在resource中创建application.yaml,在其中输入如下代码(与12306项目端口号避开):
server:
port: 8001
admin端口号8002,project端口号8001,gateway端口号8000。
在admin中增加启动类ShortLinkAdminApplication:
@SpringBootApplication
public class ShortLinkAdminApplication {
public static void main(String[] args) {
SpringApplication.run(ShortLinkAdminApplication.class,args);
}
}
出现版本问题,则需要对项目版本号、设置选项进行更改。浏览器访问localhost:8002,显示404,已经能够正常访问。
下一步就是在admin中创建应用,充实项目。框架已经搭建完成!
问题与解决
由于原先刷题用的版本为20,此项目为17,所以需要更改JDK版本。网上设置教程很多,但由于本项目的模组都是于maven安装,每次重新加载后都会回退至默认版本。解决方法是在项目pom.xml中添加如下代码:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source> <!--language level-->
<target>17</target> <!--java compiler version-->
</configuration>
</plugin>
</plugins>
</build>
这样就可以避免了每次maven刷新后还需要手动更改设置。