欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Boot学习系列(一)------入门程序

程序员文章站 2022-03-08 17:37:04
...

前言

    SpringBoot在近两年是一个很火的开源框架,在很多公司的项目中都有使用,所以学习一下该框架,为自己做一个技术储备。

正文

    从本质上来说,SpringBoot就是Spring,所以学习难度不会太大。它使用“习惯优于配置”的理念让项目快速的运行。使用springboot可以很方便的创建一个独立运行的项目,内嵌了Servlet容器,减少我们在配置文件上花费的功夫。

  • 初始化SpringBoot项目
    构建一个SpringBoot有多种方式,一种是通过Web界面来生产,还有可以用IDEA或者Eclipse直接生成。
    通过web界面创建
    首先访问页面:http://start.spring.io/
    选择构建工具可以使用Maven Project,版本等信息可以根据自己的需求来定,参考下图:
    Spring Boot学习系列(一)------入门程序
    点击Generate Project下载项目压缩包.
    导入到自己的工程中,如果使用的是IDEA,则可以:
      a.菜单中选择File–>New–>Project from Existing Sources…
      b.选择解压后的项目文件夹,点击OK
      c.点击Import project from external model并选择Maven,点击Next到底为止。
      d.若你的环境有多个版本的JDK,注意到选择Java SDK的时候请选择Java 7以上的版本
    通过IntelliJ IDEA创建
        a.在File菜单里面选择 New > Project,然后选择Spring Initializr,接着如下图一步步操作即可:
    Spring Boot学习系列(一)------入门程序
    Spring Boot学习系列(一)------入门程序
    Spring Boot学习系列(一)------入门程序
    Spring Boot学习系列(一)------入门程序
    生成的项目结构如下所示:
    Spring Boot学习系列(一)------入门程序
    项目里面很干净,包含了一下几个东西:
      a.pom.xml:Maven构建说明文件。
      b.Chapter1Application.java:一个带有main()方法的类,用于启动应用程序(关键)。
      c.Chapter1ApplicationTests.java:一个空的Junit测试类,它加载了一个使用Spring Boot字典配置功能的Spring应用程序上下文。
      d.application.properties:一个空的properties文件,你可以根据需要添加配置属性。

  • 解析pom.xml文件
    SpringBoot的pom文件和普通的SpringMVC的配置文件有一定的差距:

<?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>

    <groupId>com.dudu</groupId>
    <artifactId>chapter1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>chapter1</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <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>
    </dependencies>

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

在这些配置中,有以下几个需要了解:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

这块配置就是Spring Boot父级依赖,有了这个,当前的项目就是Spring Boot项目了,spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖可以省去version标签。关于Spring Boot提供了哪些jar包的依赖,可查看C:\Users\用户.m2\repository\org\springframework\boot\spring-boot-dependencies\1.5.1.RELEASE\spring-boot-dependencies-1.5.1.RELEASE.pom

<properties>
        <!-- Dependency versions -->
        <activemq.version>5.14.3</activemq.version>
        <antlr2.version>2.7.7</antlr2.version>
        <appengine-sdk.version>1.9.48</appengine-sdk.version>
        <artemis.version>1.5.2</artemis.version>
        <aspectj.version>1.8.9</aspectj.version>
        <assertj.version>2.6.0</assertj.version>
        <atomikos.version>3.9.3</atomikos.version>
        <bitronix.version>2.1.4</bitronix.version>
        <caffeine.version>2.3.5</caffeine.version>
        <cassandra-driver.version>3.1.3</cassandra-driver.version>
        <classmate.version>1.3.3</classmate.version>
        <commons-beanutils.version>1.9.3</commons-beanutils.version>
        <commons-collections.version>3.2.2</commons-collections.version>
        <spring-data-releasetrain.version>Ingalls-RELEASE</spring-data-releasetrain.version>
        ......
</properties>

如果不想使用某个依赖默认的版本,您还可以通过覆盖自己的项目中的属性来覆盖各个依赖项,例如,要升级到另一个Spring Data版本系列,您可以将以下内容添加到pom.xml中。

<properties>
    <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>

如果你不想使用spring-boot-starter-parent,您仍然可以通过使用scope = import依赖关系来保持依赖关系管理:

<dependencyManagement>
     <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

该设置不允许您使用如上所述的属性(properties)覆盖各个依赖项,要实现相同的结果,您需要在spring-boot-dependencies项之前的项目的dependencyManagement中添加一个配置,例如,要升级到另一个Spring Data版本系列,您可以将以下内容添加到pom.xml中。

<dependencyManagement>
    <dependencies>
        <!-- Override Spring Data release train provided by Spring Boot -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-releasetrain</artifactId>
            <version>Fowler-SR2</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Spring Boot提供了很多”开箱即用“的依赖模块,都是以spring-boot-starter-xx作为命名的。举个例子来说明一下这个起步依赖的好处,比如组装台式机和品牌机,自己组装的话需要自己去选择不同的零件,最后还要组装起来,期间有可能会遇到零件不匹配的问题。耗时又消力,而品牌机就好一点,买来就能直接用的,后续想换零件也是可以的。相比较之下,后者带来的效果更好点(这里就不讨论价格问题哈),起步依赖就像这里的品牌机,自动给你封装好了你想要实现的功能的依赖。就比如我们之前要实现web功能,引入了spring-boot-starter-web这个起步依赖。我们来看看spring-boot-starter-web到底依赖了哪些,如下图:
Spring Boot学习系列(一)------入门程序

  • 应用入口类:
    Chapter1Application是一个很关键的启动类,程序的入口就是这里,为了演示简单,我们不再新建控制类,而是直接在这个入口类中编写,添加@RestController以及index方法,如下:
package com.dudu;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class Chapter1Application {

	@RequestMapping("/")
	public String index(){
		return "Hello Spring Boot";
	}
	public static void main(String[] args) {
		SpringApplication.run(Chapter1Application.class, args);
	}
}
  1. @SpringBootApplication是Sprnig Boot项目的核心注解,主要目的是开启自动配置。后续讲解原理的时候再深入介绍。
  2. main方法这是一个标准的Java应用的main的方法,主要作用是作为项目启动的入口。
  3. @RestController注解等价于@aaa@qq.com的结合,使用这个注解的类里面的方法都以json格式输出。
  • 启动项目的方式:
    Chapter1Application的main方法:
    Spring Boot学习系列(一)------入门程序
  • 使用命令 mvn spring-boot:run”在命令行启动该应用,IDEA中该命令在如下位置:
    Spring Boot学习系列(一)------入门程序
  • 运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“java -jar”命令就可以直接运行
    Spring Boot学习系列(一)------入门程序
    Spring Boot学习系列(一)------入门程序
    打开浏览器访问http://localhost:8080, 你就能看到页面显示Hello Spring Boot效果了,一个简单的Web的项目就是如此简单。

总结

SpringBoot的开发就是如此的简单,我们不用再单独使用繁杂的配置文件,只需要关注业务即可.在下一篇文章中,将对SpringBoot的配置文件进行解析,加深认识,以便更好的使用SpringBoot.

本篇参考自:原文: http://tengj.top/2017/02/26/springboot1/  作者: 嘟嘟MD
在后面的博文中,我将使用自己的小demo做演示.

相关标签: SpringBoot