美文网首页
SpringBoot-概述与入门

SpringBoot-概述与入门

作者: Tian_Peng | 来源:发表于2020-05-08 20:29 被阅读0次

    概述

    我们刚开始学习JavaWeb的时候,使用Servlet/JSP做开发,一个接口搞一个 Servlet ,很头大,后来我们通过隐藏域或者反射等方式,可以减少 Servlet 的创建,但是依然不方便,再后来,我们引入Struts2/SpringMVC这一类的框架,来简化我们的开发 ,和Servlet/JSP相比,引入框架之后,生产力确实提高了不少。
    但是用久了,又发现了新的问题,即配置繁琐易出错,要做一个新项目,先搭建环 境,环境搭建来搭建去,就是那几行配置,不同的项目,可能就是包不同,其他大部分的配置都是一样 的,Java 总是被人诟病配置繁琐代码量巨大,这就是其中一个表现。
    那么怎么办?Spring Boot 应运而生

    SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。
    它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。
    另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

    Spring Boot不是一门新技术,从本质上来说,Spring Boot就是Spring,它做了那些没有它你也会去做的Spring Bean配置。
    它使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。
    使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置。

    Spring Boot 主要提供了如下功能:

    • 为所有基于 Spring 的 Java 开发提供方便快捷的入门体验。
    • 开箱即用,有自己自定义的配置就是用自己的,没有就使用官方提供的默认的。
    • 提供了一系列通用的非功能性的功能,例如嵌入式服务器、安全管理、健康检测等。
    • 绝对没有代码生成,也不需要XML配置。

    Spring Boot 的出现让 Java 开发又回归简单,因为确确实实解决了开发中的痛点,因此这个技术得到了非常广泛的使用,现在流行的 Spring Cloud 微服务也是基于Spring Boot,因此,所有的Java 工程师都有必要掌握好Spring Boot。

    快速入门

    三种创建方式
    • 在线创建
      这是官方提供的一个创建方式,实际上,如果我们使用开发工具去创建 Spring Boot 项目的话(即第二 种方案),也是从这个网站上创建的,只不过这个过程开发工具帮助我们完成了,我们只需要在开发工具中进行简单的配置即可。
      首先打开https://start.spring.io/这个网站,界面如下:

    这里要配置的按顺序分别如下:

    • 项目构建工具是Maven还是Gradle
      Java 后端,目前来看 还是 Maven 为主,因此这里选择第一项。
    • 开发语言,这个当然是选择Java了
    • Spring Boot 版本,可以看到,目前最新的稳定版是 2.2.7 ,这里我们就是用最新稳定版
    • 既然是 Maven 工程,当然要有项目坐标,项目描述等信息了,另外这里还让输入了包名,因为创 建成功后会自动创建启动类。
    • Packing 表示项目要打包成jar包还是war包,Spring Boot的一大优势就是内嵌了Servlet容器,打成jar包后可以直接运行,所以这里建议打包成jar包,当然,开发者根据实际情况也可以选择war包。
    • 选择构建的JDK版本。
    • 最后是选择所需要的依赖,输入关键字如web,会有相关的提示

    所有的事情全部完成后,点击最下面的 Generate按钮,或者点击 Alt+Enter 按键,此时会自动下载项目,将下载下来的项目解压,然后用 IntelliJ IDEA 或者 Eclipse 打开即可进行开发。

    • 通过开发工具创建
      我们也可以通过IDE来创建,以IntelliJ IDEA为例,首先在创建项目时选择 Spring Initializr,如下图:



    • 通过Maven创建
      首先创建一个普通的 Maven 项目,以 IntelliJ IDEA 为例,创建步骤如下:


      输入项目信息,项目生成结构如下:

    创建完成后,在 pom.xml 文件中,添加如下依赖:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    

    添加成功后,再在 java 目录下创建包,包中创建一个名为 MavenBootApplication 的启动类,如下:

    @SpringBootApplication
    public class MavenBootApplication {
        public static void main(String[] args) {
            SpringApplication.run(MavenBootApplication.class, args);
        }
    }
    

    我们在resource下建立static、template目录,创建application.properties配置文件,并配置启动端口为8081

    编写一个HelloController:

    @RestController
    public class HelloController {
    
        @RequestMapping("/")
        public String hello(){
            return "Hello Boot";
        }
    }
    

    然后执行MavenBootApplication的 main 方法就可以启动一个 Spring Boot 工程了。
    浏览器访问:http://localhost:8081/,效果如下:

    配置文件优先级

    在 Spring Boot 中,配置文件有两种不同的格式,一个是 properties ,另一个是 yaml 。
    虽然 properties 文件比较常见,但是相对于 properties 而言,yaml 更加简洁明了,而且使用的场景也 更多,很多开源项目都是使用 yaml 进行配置(例如 Hexo)。
    除了简洁,yaml 还有另外一个特点,就是 yaml 中的数据是有序的,properties 中的数据是无序的,在一些需要路径匹配的配置中,顺序就显得尤为重要(例如我们在 Spring Cloud Zuul 中的配置),此时我们一般采用yaml。
    如果项目中既有properties文件,又有yaml文件,配置项相同的时候,properties文件优先于yaml文件

    配置文件位置问题

    首先,当我们创建一个 Spring Boot 工程时,默认 resources 目录下就有一个 application.properties 文件,可以在 application.properties 文件中进行项目配置,但是这个文件并非唯一的配置文件,在 Spring Boot 中,一共有 4 个地方可以存放 application.properties 文件。

    • 当前项目根目录下的 config 目录下
    • 当前项目的根目录下
    • resources 目录下的 config 目录下
    • resources 目录下

    按如上顺序,四个配置文件的优先级依次降低。如下:

    这四个位置是默认位置,即 Spring Boot 启动,默认会从这四个位置按顺序去查找相关属性并加载。
    但是,这也不是绝对的,我们也可以在项目启动时自定义配置文件位置。
    例如,现在在 resources 目录下创建一个tpConfig目录,目录中存放一个 application.properties 文件并配置启动端口为8082,那么正常情况下,当我们启动 Spring Boot 项目时,这个配置文件是不会被自动加载的。
    我们可以通过 spring.config.location 属性来手动的指定配置文件位置,指定完成后,系统就会自动去指定目录下查找 application.properties 文件。

    文件名问题

    对于 application.properties 而言,它不一定非要叫 application ,但是项目默认是去加载名为 application 的配置文件。
    如果我们的配置文件不叫 application ,也是可以的,但是需要明确指定配置文件的文件名。
    方式和上面指定路径一致,只不过此时的 key 是 spring.config.name 。
    首先我们在 resources 目录下创建一个 app.properties 文件,然后在 IDEA 中指定配置文件的文件名:

    指定完配置文件名之后,再次启动项目,此时系统会自动去默认的四个位置下面分别查找名为 app.properties 的配置文件。当然,允许自定义文件名的配置文件不放在四个默认位置,而是放在自定义目录下,此时就需要明确指定 spring.config.location 。
    配置文件位置和文件名称可以同时自定义。

    相关文章

      网友评论

          本文标题:SpringBoot-概述与入门

          本文链接:https://www.haomeiwen.com/subject/trxqxctx.html