[toc]
项目需求分析
前言
今年跳槽后工作比较悠闲,而且本人对android开发确实觉得兴趣乏乏,刚好SpringBoot目前很火,而且可以和我android的kotlin母语配合食用,所以,开坑一个SpringBoot学习系列。
目标
- 开发一个纯粹的KotlinApp项目
- 开发一个SpringBoot项目(前后端不分离,因为我不会写html)
项目分析
App
仿着饿了么来,除开支付模块(因为我没有账号),其他特效,自定义View之类的,估摸着自己学习,少用或者禁用第三方,尽量杜绝面向百度编程
后台
api模块
提供api给与app调用,尽量规范化,模块化。
管理后台模块
使用Bootstrap布局,写类似jsp的页面模块,虽然不优雅,不好看。
开撸
模块解释
后台的话,打算分成3个模块:
- Buyer
- Seller
- Service
其中
Buyer 模块为app提供接口
Seller 模块提供ModelAndView,也就是管理后台
Service模块提供Service,dao,数据操作
实际操作
新建SpringBoot项目
如果还不会新建项目,可以查看如何新建SpringBoot项目
删除多余文件
删除项目目录下src目录,即删除后,项目目录为:

新建module
分别新建Buyer,Seller,Service 三个module,新建方法为:


修改根项目的pom.xml文件
修改根项目的pom.xml文件,去除掉springBoot的依赖(这些依赖我们放在Service Module里面)
这里只是我个人的看法,也许不对
其实这里我对这个项目的认识是:

没错,就是android狗最熟悉的Eclipse(其实我没用过,不过这个比较好解释)
platform 也就是我们一开始新建的那个空壳项目,其实相当于Eelipse的workPlace,也就是我们的工作目录
Service 其实就是我们提供数据的Library,我们每个功能模块都会依赖它,在里面写Dao,Service
Buyer 卖家模块,其实就是一个提供入口的功能模块,依赖了Service模块,调用里面的Service
Seller 买家模块,解释同Buyer
好的,我知道还是解释得很烂,那我们看图。

其中根目录的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>
<modules>
<module>Buyer</module>
<module>Service</module>
<module>Seller</module>
</modules>
<groupId>com.ly</groupId>
<artifactId>platform</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>platform</name>
<description>Demo project for Spring Boot</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
注意这里根模块引用了3个module:
<module>Buyer</module>
<module>Service</module>
<module>Seller</module>
其中Service的pom.xml文件比较繁杂,因为主要Springboot依赖的文件,通用第三方都会写在这里
<?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>platform</artifactId>
<groupId>com.ly</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>service</artifactId>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<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>
</dependency>
<!--lombok插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--jpa-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
<!--微信插件-->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>2.9.0</version>
</dependency>
<!--spring-boot-configuration:spring boot 配置处理器; -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!--swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
<!--freemarker-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
而Buyer以及Seller的pom.xml高度类似:
Buyer
<?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>platform</artifactId>
<groupId>com.ly</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Buyer</artifactId>
<dependencies>
<dependency>
<groupId>com.ly</groupId>
<artifactId>service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<type>pom</type>
<version>1.5.2.RELEASE</version>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<properties>
<start-class>com.ly.platform.PlatformApplication</start-class>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.3.RELEASE</version>
<configuration>
<mainClass>${start-class}</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Seller
<?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>platform</artifactId>
<groupId>com.ly</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Seller</artifactId>
<dependencies>
<dependency>
<groupId>com.ly</groupId>
<artifactId>service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<type>pom</type>
<version>1.5.2.RELEASE</version>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<properties>
<start-class>com.ly.platform.PlatformApplication</start-class>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.3.RELEASE</version>
<configuration>
<mainClass>${start-class}</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
值得注意的是这边Buyer以及Service模块都引入了Service
<dependencies>
<dependency>
<groupId>com.ly</groupId>
<artifactId>service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
每个模块自己的独立配置文件
值得注意的是配置文件,我们一共有3个配置文件 (properties/yml)
分别位于:Buyer,Seller,Service
其中所负责的功能不同:
Service模块的配置文件
负责通用配置,例如配置常量,配置数据库,Redis等等
Buyer/Seller模块的配置文件
负责配置各自的端口,日志文件目录等等不需要通用的配置
使用方法
Service
按去配置数据库连接,写dao,service 不表,我们写好了如下文件:

其中service提供的方法为:
/**
* Banner
*/
public interface BannerService {
List<Banner> findAll();
}
Buyer
配置端口为8888

写好对应的controller
@RestController
@RequestMapping("api/home")
@Api(value = "首页模块", description = "管理Banner")
public class BannerController {
@Autowired
private BannerService bannerService;
@GetMapping("banner")
@ApiOperation("查询所有的Banner")
public List<Banner> getAllBanner() {
return bannerService.findAll();
}
}
Seller
配置端口为8889
server.port=8889
写对应的controller
@RestController
@RequestMapping("web/home")
@Api(value = "首页模块", description = "管理Banner")
public class BannerController {
@Autowired
private BannerService bannerService;
@GetMapping("banner")
@ApiOperation("查询所有的Banner")
public List<Banner> getAllBanner() {
return bannerService.findAll();
}
}
Tips 计划Seller是前后端不分离的,所以这里应该返回的ModelAndView,不过先写着测试吧
结果测试
这里使用postman进行接口测试,接口地址分别为:
localhost:8888/platform/api/home/banner
localhost:8889/platform/web/home/banner
结果为:


网友评论