购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 搭建Spring开发环境

在以前的项目开发中要使用Spring框架,需要开发者从官网下载所需版本的Spring jar包到本地项目中,然后再构建依赖,并且后续每新建一个项目都需要复制一份依赖到新项目中,然后再开始进行项目开发。自从Maven出现后,这种情况发生了改变,开发者只需要添加Spring依赖坐标就能自动下载所需要的jar包到项目中,改变了以前手动复制jar的过程,提高了开发效率。

1.2.1 Maven的优势和标准目录结构

Maven是一个跨平台地进行项目管理和构建综合工具,能让开发者更方便地管理和构建项目。Maven的最大特色是管理项目依赖,添加依赖后,它能够自动从中央仓库下载项目需要的jar包,从而构建项目依赖的jar包。Maven可以自动完成项目基础构建的管理,它使用的是标准的目录结构和默认的构建生命周期。当有多个开发者协作开发时,Maven可以设置按照约定快速完成项目的配置工作。

使用Maven进行项目开发有4个优点:

使用Maven开发项目约定了一个标准目录结构,即约定优于配置的原则。标准的Maven目录结构如图1.2所示。

016-1

图1.2 Maven项目结构

其中,项目名为springdemo,src是存放源码的目录,Java源代码文件存放在src/main/java下,项目配置文件存放在src/main/resources下,Java单元测试文件存放在test/java下,项目的所有依赖都存放在pom.xml文件中,编译后的文件存放在target目录下。当使用Maven进行开发时,按照以上约定,相应的文件可以放置在相应的位置也可以放在其他目录下。当放在其他目录下时需要配置说明。按照约定俗成的习惯来开发,这就是约定优于配置的原则。

说明: 在创建项目中的类和配置文件时,如无特殊说明,都是按照上述标准目录来存放的。

在Maven的使用过程中有两个ID非常重要,分别是groupId和artifactId,它们表示jar的组织ID和名字ID。

项目开发中会涉及版本的迭代,如果一个jar的groupId和artifactId一样,但是版本(version)不同,那么它们就是不同的jar。世界上众多依赖Maven构建的项目就是使用groupId、artifactId和version来决定jar的唯一性,这三者组成了一个Maven坐标。常见的Maven坐标的配置文件如下(外层包裹dependency标签):

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>5.3.8</version>
</dependency>

在开发时如果需要添加相关的依赖,只需要确定groupId、artifactId和version,Maven会自动从中央仓库中把所需的jar包下载到本地。例如当进行Spring开发时,需要把Spring的core包引入项目中,只要在pom.xml中添加spring-core 5.3.8版本的依赖,即可自动完成jar的下载和构建。

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>5.3.8</version>
</dependency>

1.2.2 Maven的下载和安装

本书使用的Maven版本是3.5.2,请读者自行将Maven(二进制源的压缩包)下载到本地。该版本的Maven需要的JDK版本是1.8+,建议读者安装完JDK后再安装Maven。下载后的Maven需要配置环境变量。

(1)把下载的Maven压缩包解压到目录D:\soft下。

(2)配置Window环境变量,在Path变量中添加D:\soft\apache-maven-3.5.2\bin完成Maven环境变量的配置。

(3)配置完成后,在控制台上使用mvn -v命令验证本地的Maven是否配置成功,如果显示如图1.3所示的提示,则表示Maven已经配置成功了。

017-1

图1.3 Maven安装命令验证

mvn -v是查看Maven版本的命令,Maven的使用依赖于各种命令,表1.1列举了开发中常用的Maven命令,这些命令还可以组合使用。例如,清理编译后的文件再打包项目,可以使用命令mvn clean package。

表1.1 常见的Maven命令

018-1

因为从国外的Maven中央仓库下载jar包速度较慢,为了在开发中更快地下载所需的jar包,建议读者在配置完成Maven之后再配置国内的Maven仓库镜像。本书推荐使用华为云的Maven仓库或阿里云的Maven仓库,方法如下:

(1)打开Maven安装目录下的conf目录,使用文本编辑工具打开settings.xml文件。

(2)在mirrors节点下配置仓库的地址。下面是华为云和阿里云的仓库地址,读者可任选其一完成配置。

<mirrors>
    <!-- 阿里云的仓库地址-->
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>

   <!-- 华为云的仓库地址-->
    <mirror>
        <id>huaweicloud</id>
        <mirrorOf>*</mirrorOf>
        <name>华为云公共仓库</name>
        <url>https://mirrors.huaweicloud.com/repository/maven/</url>
       </mirror>
  </mirrors>

总体来说,Maven起到了简化开发和标准化项目开发的作用,实现了企业项目的轻松构建。Maven的安装是下一步操作的基础,请读者务必安装。

1.2.3 搭建Eclipse开发环境

当使用Java进行项目开发时,估计读者想到的第一个IDE是Eclipse(使用IDEA的请跳转到下一小节)。请读者自行从Eclipse的官网下载并安装Eclipse,具体步骤不再赘述。本小节使用的Eclipse版本是Version:2020-09 (4.17.0)。

将下载文件解压后,打开eclipse.exe即可启动Eclipse。Eclipse启动后,配置Eclipse工作空间的编码为UTF-8,配置步骤如图1.4所示,本地Maven目录和配置文件的位置,如图1.5所示。

019-1

图1.4 Eclipse的编码设置

019-2

图1.5 Eclipse的Maven的配置

最后单击Apply and Close按钮即完成Eclipse的配置。下面简单介绍如何使用Eclipse。

使用Eclipse新建一个Maven项目。选择File | new Project | Maven Project命令,弹出New Project对话框,如图1.6所示。单击Next按钮,在弹出的对话框中选择创建一个简单的项目,然后设定group id和artifact id分别为com.onyx和spring-demo,最后单击Finish按钮完成项目的创建。

020-1

图1.6 使用Eclipse新建Maven项目

最终创建完成的项目目录如图1.7所示。下一步就是在pom.xml中添加依赖,正式开始项目开发。

020-2

图1.7 Eclipse中的Maven项目目录

1.2.4 搭建IntelliJ IDEA开发环境

在Java的企业级开发中,常用的IDE还有IDEA。本书使用的IntelliJ IDEA的版本为IntelliJ IDEA 2018.3.6,请读者自行下载安装。安装完成后必须先进行配置。打开IntelliJ IDEA,选择File | Settings命令,弹出配置页面,在其中配置本地Maven,设置Maven的所在目录和配置文件位置,如图1.8所示。

020-3

图1.8 IntelliJ IDEA Maven设置

注意: User settings file选项配置的是conf下的settings.xml。Local repository选项可选择本地仓库,也可以新建一个目录。

完成IntelliJ IDEA的Maven设置后,和Eclipse一样新建一个Maven项目,选择File | new Project命令,在弹出的对话框中选择使用Maven作为构建工具,然后单击Next按钮弹出项目名称对话框,在其中设定groupId和artifactId分别为com.onyx和spring-demo,然后单击Finish按钮。创建完成后的目录结构和Eclipse类似,如图1.9所示,IDEA和Eclip都实现了Maven的约定,不同的工具创建出来的Maven目录结构均一致。

021-1

图1.9 IntelliJ IDEA的Maven项目结构

至此完成了IDEA项目的创建。在项目开发中建议使用IDEA,这样会帮助开发者节省大量的构建时间,而且可以避免一些奇怪的项目构建问题。

1.2.5 实战:第一个Hello World项目

本书中的所有代码都使用IntelliJ IDEA完成,具体步骤如下:

(1)打开IntelliJ IDEA新建一个项目。选择File | new Project命令,在弹出的对话框中,选择Maven选项,然后单击Next按钮,在进入的对话框中输入groupId和artifactId作为com.onyx和springdemo,然后单击Finish按钮,创建第一个Hello Word项目springdemo。

(2)在pom.xml中添加spring-context依赖,代码如下:

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>
</dependencies>

(3)在src/main/java下新建包com.onyx,再新建一个HelloWorld类,使用注解@Value获取配置文件application.properties(后面创建)中的值,格式为${user.name},其中user.name为配置的名字。代码如下:

package com.onyx;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration                            //标明是一个配置类
public class HelloWorld {
    //通过@Value注解,把配置文件中的user.name注入当前类中
    @Value("${user.name}")
    private String name;
    public void setName(String name) {
        this.name = name;
    }
    public HelloWorld() {
        System.out.println("初始化构造器");
    }
    public void hello() {
        System.out.println("Hello: " + name);
    }
}

(4)本书不使用传统的XML配置方式,而是尽量使用注解的形式配置项目,Spring Boot的官方团队也推荐在开发中使用注解的形式进行配置,Hello World项目也是如此。在resources目录下新建Spring Boot的默认配置文件application.properties,在其中新建配置如下:

#设置用户的名字为CC
user.name=CC

(5)在包com.onyx下新建一个测试类Demo,代码如下:

package com.onyx;
import org.springframework.context.annotation.AnnotationConfig
ApplicationContext;
public class Demo {
    public static void main(String[] args) {
        //使用配置文件初始化一个Spring的IoC容器
        AnnotationConfigApplicationContext context = new AnnotationConfig
ApplicationContext(HelloWorld.class);
        //根据HelloWord的类找到Bean实例
        HelloWorld bean = context.getBean(HelloWorld.class);
        //调用Bean的方法,验证注入属性是否成功
        bean.hello();
    }
}

(6)运行Demo中的main()函数就可以看到控制台打印的结果,如图1.10所示。

023-1

图1.10 Hello World运行结果

图1.10展示了在Spring中如何获取Bean。默认情况下,Spring会把类名的首字母变成小写后作为当前注入的Bean的名字,因此当前Bean的名字应该是helloWorld。使用Bean的名字从Spring容器中获取Bean,调用hello()方法,结果如图1.11所示。读者可以更改代码中的main()函数进行测试。

023-2

图1.11 根据名字获取Bean

通过上面的Hello World项目,我们已经完成了Spring的入门体验,实现了从Spring Ioc容器中获取一个Bean、然后调用Bean的方法。此Bean和new HelloWorld()产生的对象不同,此Bean是Spring增强后产生的代理对象,是受Spring管理的对象。 JnjvRNMe72uaEfZ5tgPjkVpo2hYPh+sD7O/HPgpFCSyCBNDzuqVQ82WNc3tnJrYB

点击中间区域
呼出菜单
上一章
目录
下一章
×