Spring Boot (三) Maven项目SpringBoot搭建
之前写过一个简单化的SpringBoot搭建流程,见链接:
简化springBoot,本次则主要讲述Maven框架下的SpringBoot搭建流程,首先我们要把Maven需要的多层结构搭建出来,在此我总共弄了四层,分别是rpc(远程调用),utils(工具包),service(服务),web(对接),通过开发工具可以搭建,在此我则是通过之前讲述的命令的方式完成了整个流程,搭建流程见链接:Maven多模块命令搭建。
我的简单搭建命令如下:
mvn archetype:generate -DgroupId=me.gacl -DartifactId=exam-manager -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:generate -DgroupId=me.gacl -DartifactId=exam-manager-utils -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:generate -DgroupId=me.gacl -DartifactId=exam-manager-service -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:generate -DgroupId=me.gacl -DartifactId=exam-manager-rpc -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:generate -DgroupId=me.gacl -DartifactId=exam-manager-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
详情见上边链接,命令执行玩,我们需要手动造就层级之间的pom连接。(具体最后见下文pom文件)。
parent需SpringBoot配置,官网只是提供了两个:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
当然我们可以不适用spring-boot-starter-parent,可以使用什么添加什么,比如应用到的:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>${spring.boot.version}</version>
</dependency>
等等……。
层层之间依赖关系:
最终pom文件如下:
父类pom:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>exam-manager-web</artifactId>
<dependencies>
<dependency>
<groupId>com.exam.api</groupId>
<artifactId>exam-manager-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<finalName>exam-manager</finalName>
</build>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
</project>
exam-manager-service pom文件:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.exam.api</groupId>
<artifactId>exam-manager</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>exam-manager-service</artifactId>
</project>
exam-manager-rpc pom文件:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.exam.api</groupId>
<artifactId>exam-manager</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>com.exam.api</groupId>
<artifactId>exam-manager-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<artifactId>exam-manager-rpc</artifactId>
</project>
exam-manager-web pom文件:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>exam-manager-web</artifactId>
<dependencies>
<dependency>
<groupId>com.exam.api</groupId>
<artifactId>exam-manager-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<finalName>exam-manager</finalName>
</build>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
</project>
exam-manager-utils pom文件:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.exam.api</groupId>
<artifactId>exam-manager</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>exam-manager-utils</artifactId>
</project>
pom文件配置完成,接下来我们则可以通过springBoot实现RESTful API,在此实现的过程和spring MVC应用一样,只不过实现的过程需要的配置并不需要spring MVC那么多。测试Controller类如下:
@RestController
public class examBaseController {
@RequestMapping("/Hello")
public String hello(){
return "hello,nice to meet you";
}
}
测试类创建完,我们则需要想办法去启动运行一下,对于SpringBoot而言,有一个专门的注解则可以完成启动功能的重大任务:
@SpringBootApplication
public class Bootstrap {
public static void main(String[] args) {
SpringApplication.run(Bootstrap.class, args);
}
}
@SpringBootApplication注解,这是整个Spring Boot的核心注解,它的目的就是开启Spring Boot的自动配置,代码完成之后,直接main方法则可以启动SpringBoot整个项目。
目前我创建的Maven项目架构如下:
假设再启动过程中,又出现了如下错误:
这次我们并没有空建类文件,但是包名有点太过于复杂,所以识别不出来,我们可以直接在@SpringBootApplication注解后边加上包名,以便扫描识别。
到此为止基本的启动功能算是完工。