【SpringBoot-1】依赖环境、项目结构与项目demo

Spring Boot 依赖环境和项目结构

  • 1 环境配置
    • 1.1 maven安装与配置
  • 2 创建项目
    • 2.1 使用IDEA构建项目
    • 2.2 pom文件介绍
    • 2.3 application.yml配置文件

1 环境配置

各版本信息如下:
Spring Boot版本:2.0
JDK版本:1.8
开发工具:IntelliJ IDEA
构建工具:maven-3.5.0

构建工具是一个把源代码生成可执行应用程序的自动化工具,Java 领域中主要有三大构建工具:Ant、Maven 和 Gradle。

  1. Ant(AnotherNeatTool)的核心是由 Java 编写,采用 XML 作为构建脚本,这样就允许你在任何环境下运行构建。Ant 是 Java 领域最早的构建工具,不过因为操作复杂,慢慢的已经被淘汰了。
  2. Maven,Maven 发布于 2004 年,目的是解决程序员使用 Ant 所带来的一些问题,它的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性。
  3. Gradle,Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不是传统的 XML。结合了前两者的优点,在此基础之上做了很多改进,它具有 Ant 的强大和灵活,又有 Maven 的生命周期管理且易于使用。

1.1 maven安装与配置

安装 Maven 的前提是完成 Java 环境安装,Maven 依赖于 Java 环境。访问 Maven 官网(http:maven.apache.org/)下载 Maven 对应的压缩包。
【SpringBoot-1】依赖环境、项目结构与项目demo_第1张图片
选择 Maven 的 zip 压缩包(apache-maven-3.5.4.zip),下载完成后解压到本机目录下。例如,路径:D:\Soft_test\maven。maven免安装,解压后直接使用即可。
环境变量配置:
1、此电脑右键-属性-高级系统配置-环境变量,进入环境变量编辑页面,在【系统变量】栏选择新建:
【SpringBoot-1】依赖环境、项目结构与项目demo_第2张图片
2、在【系统变量】栏双击【Path】,点击新建将【%MAVEN_HOME%】添加进去。
【SpringBoot-1】依赖环境、项目结构与项目demo_第3张图片
3、测试:Win10 下使用快捷 window+r 输入 cmd 命令,弹出“运行”对话框,执行命令 mvn -v,若出现如下结果,则表示安装成功!
【SpringBoot-1】依赖环境、项目结构与项目demo_第4张图片
以上,maven安装并配置完成。

settings.xml 设置:

Maven 解压后目录下会有一个 settings.xml 文件,位置:${M2_HOME}/conf/settings.xml,用来配置 Maven 的仓库和本地 Jar 包存储地址。Maven 仓库地址代表从哪里去下载项目中的依赖包 Jar 包;Maven 会将所有的 Jar 包统一存储到一个地址下,方便各个项目复用。
localRepository 设置本地存放 Jar 包地址,可以根据自己的情况改动:

<localRepository>D:/Software_test/maven/repository</localRepository>

mirrors 为仓库列表配置的下载镜像列表,这里我们选择阿里的镜像,下载jar包时速度会快很多。

<mirror>
	<id>nexus-aliyun</id>
	<mirrorOf>*</mirrorOf>
	<name>Nexus aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

IDEA配置maven:

每次打开新项目,都要重新配置maven地址,为了避免这个麻烦,设置一下idea的默认maven信息:
执行File–OtherSettings–Default Settings,选择maven:
【SpringBoot-1】依赖环境、项目结构与项目demo_第5张图片

本文会记录用SpringBoot创建一个简单的项目的详细步骤和相关代码,作为备忘。这个项目会实现一个接口,将数据库的数据返回给接口调用者。

2 创建项目

创建项目前,配置编码格式,这是一个容易忽略的点,IDEA 中,仍然依次打开 File -> Settings,搜索“Encoding”,配置本地的编码信息,如下图所示:
【SpringBoot-1】依赖环境、项目结构与项目demo_第6张图片

2.1 使用IDEA构建项目

首先,打开IDEA,点击File–New–Project:
【SpringBoot-1】依赖环境、项目结构与项目demo_第7张图片
选择Spring Initializr,点击Next:
【SpringBoot-1】依赖环境、项目结构与项目demo_第8张图片
【SpringBoot-1】依赖环境、项目结构与项目demo_第9张图片

这一步有Group和Artifact两个选项,需要填入groupid和groupid。那么,什么是groupid和artifactId?
groupid和artifactId被统称为“坐标”,是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。
groupId一般分为多个段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。

【SpringBoot-1】依赖环境、项目结构与项目demo_第10张图片
选择项目名称和保存目录
【SpringBoot-1】依赖环境、项目结构与项目demo_第11张图片
点击Finish,再自行创建包和类,完成项目的创建:
【SpringBoot-1】依赖环境、项目结构与项目demo_第12张图片

project
 +-src
    +- main
         +- java
              +- com.example.demo
                    +- config
                    +- controller
                    +- dao
                    +- model
                    +- service
                    +- utils
                    +- Application.java
         +- resources
              +- static
              +- templates
              +- application.properties
    +- test
 +-pom.xml

创建好的项目结构如上图,可以看到自己创建了一些包,说下它们的作用:

  1. config:放置配置类
  2. controller:放置对外暴露接口的类
  3. dao:与数据库交互,命名为mapper更加规范,看个人习惯
  4. model:主要用于实体(Entity)与数据访问层(Repository)
  5. service:主要是业务类代码
  6. utils:工具类

resources 目录下:

  1. static:目录存放 web 访问的静态资源,如 js、css、图片等; templates 目录存放页面模板;
  2. application.yml:存放项目的配置信息。
  3. test:目录存放单元测试的代码;
  4. pom.xml:用于配置项目依赖包,以及其他配置。

2.2 pom文件介绍

pom.xml 文件主要描述了项目包的依赖和项目构建时的配置,在默认的 pom.xml 包中分为四大块。
第一部分为项目的描述信息:

<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>

groupId:项目的包路径;
artifactId:项目名称;
version:项目版本号;
packaging:一般有两个值:jar、war,表示使用 Maven 打包时构建成 Jar 包还是 War 包;
name:项目名称;
description:项目描述。

第二部分为项目的依赖配置信息:

<parent>
	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>
  1. parent:标签内配置 Spring Boot 父级版本 spring-boot-starter-parent,Maven 支持项目的父子结构,引入父级后会默认继承父级的配置;
  2. dependencies:标签内配置项目所需要的依赖包,Spring Boot 体系内的依赖组件不需要填写具体版本号,spring-boot-starter-parent 维护了体系内所有依赖包的版本信息。

第三部分为构建时需要的公共变量

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <java.version>1.8</java.version>
  <fastjson.version>1.2.47</fastjson.version>
  <druid.version>1.1.9</druid.version>
  <mybatis.version>1.3.2</mybatis.version>
</properties>

上面配置了项目构建时所使用的编码,输出所使用的编码,最后指定了项目使用的 JDK 版本和其他第三方jar包的版本。
第四部分为构建配置:

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

使用 Maven 构建 Spring Boot 项目必须依赖于 spring-boot-maven-plugin 组件,spring-boot-maven-plugin 能够以 Maven 的方式为应用提供 Spring Boot 的支持,即为 Spring Boot 应用提供了执行 Maven 操作的可能。spring-boot-maven-plugin 能够将 Spring Boot 应用打包为可执行的 jar 或 war 文件,然后以简单的方式运行 Spring Boot 应用。

下面附上完整的pom文件,包括了几个常用的依赖(mysql、lombak等),可以自行删除,另外,注意根据自己的项目进行修改groupId、artifactId、name等:

<?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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>com.example</groupId>
    <artifactId>mudemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mudemo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <swagger.version>2.8.0</swagger.version>
        <google.guava>23.0</google.guava>
        <fastjson.version>1.2.47</fastjson.version>
        <druid.version>1.1.9</druid.version>
        <poi.version>3.17</poi.version>
        <jwt.version>0.9.0</jwt.version>
        <mybatis.version>1.3.2</mybatis.version>
    </properties>

    <dependencies>
        <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.1</version>
        </dependency>

        <!--连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>

		<!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

		<!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
        </dependency>

        <!--分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.3 application.yml配置文件

项目自动生成的配置文件是.properties文件,个人习惯使用更加简洁直观的.yml格式,文件中配置了项目的端口号和数据库连接信息:

server:
  port: 8088
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=true
    username: root
    password:

serverTimezone=UTC要放在第一个位置,如果没有这个属性,可能出现以下异常:
Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC

你可能感兴趣的:(#,SpringBoot,SpringBoot项目搭建,SpringBoot项目结构)