转载

SpringBoot(一) 新建项目

今年跳槽后工作比较悠闲,而且本人对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目录,即删除后,项目目录为:

SpringBoot(一) 新建项目

新建module

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

SpringBoot(一) 新建项目
SpringBoot(一) 新建项目

修改根项目的pom.xml文件

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

SpringBoot(一) 新建项目

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

好的,我知道还是解释得很烂,那我们看图。

SpringBoot(一) 新建项目

其中根目录的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 不表,我们写好了如下文件:

SpringBoot(一) 新建项目

其中service提供的方法为:

/**
 * Banner
 */
public interface BannerService {
    List<Banner> findAll();
}

Buyer

配置端口为8888

SpringBoot(一) 新建项目

写好对应的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,不过先写着测试吧

原文  https://juejin.im/post/5a72d8946fb9a01ca713c78e
正文到此结束
Loading...