这是开篇的第一篇文章,从创建工程开始,之后会逐步完善丰富,希望自己可以坚持做下去。整体会完成一个商城,后端的核心技术栈将选择SpringBoot,并采用前后端分离的方式进行开发。
环境配置如下所
- IDE:Intellij Idea
- OS:Mac
- Java:Java 8
主工程
起项目的方式,这里选择了通过Intellij创建一个空的Maven工程,当然也可以使用start.spring.io快速生成一个Spring Boot的模板工程。
![](https://img.haomeiwen.com/i19765376/76d3a470c4e884a7.png)
填写group-id以及artifact-id,即可完成创建创建。这里的项目名称为foodie,它将作为整个项目的根工程(parent),可以理解为Xcode的workspace,而具体的功能将以子模块的方式存在于根工程中,类似Xcode中的project。
项目的配置存在于pom文件中,描述项目以及依赖管理和打包方式等等。刚创建好的pom文件如下所示:
<?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.iossocket</groupId>
<artifactId>foodie-dev</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
</project>
大部分都为模块信息,构建方式packaging
这里选择了pom
,稍后会对它进行解释(可选的方式有jar
,war
,pom
)
子模块
依次建立子模块common,pojo,mapper,service,api。其中common模块中会存放一些工具类可被各个模块使用的共有代码;pojo顾名思义,存放项目中需要的entity;mapper,由于项目会使用mybatis作为ORM,mapper中存放db和entity的映射关系;service就比较常规咯,业务代码;api中则是controller类,各个request的入口。
在添加这些模块后,Intellij会自动更新根项目中的pom:
<?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.iossocket</groupId>
<artifactId>foodie-dev</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>foodie-dev-common</module>
<module>foodie-dev-pojo</module>
<module>foodie-dev-mapper</module>
<module>foodie-dev-service</module>
<module>foodie-dev-api</module>
</modules>
<packaging>pom</packaging>
</project>
多出来的modules标签下的便是新添加的各个子模块,子模块在父工程中是平级的。我们希望的依赖关系是这样的api -> service -> mapper -> pojo -> common,子模块间要相互引用,需要在子模块的pom中进行声明。用api需要依赖service来举例说明一下,其他的依赖声明方式完全相同:
<?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">
<parent>
<artifactId>foodie-dev</artifactId>
<groupId>com.iossocket</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>foodie-dev-api</artifactId>
<dependencies>
<dependency>
<groupId>com.iossocket</groupId>
<artifactId>foodie-dev-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
我们可以看到这里的dependencies标签,下面就可以声明它的所有依赖,现在只有一个,可以根据需要添加其他的依赖。但需要说明一点的是,如果api要使用common里的代码,就不需要再api的pom中添加common的依赖,因为依赖会被传播的,想想我们的Cocoapods也是相同的。
在依赖声明完成之后,需要在跟项目中执行mvn的install指令,可以在intelij的右侧面板中点击执行。
发现在install后,控制台会报一个warning:Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
。解决起来也很简单,只需要在根项目的pom中添加如下声明即可。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
在下一章中,我们会开始数据库相关的内容
网友评论