zoukankan      html  css  js  c++  java
  • SpringBoot(一)简介

      SpringBoot是由Pivotal团队提供的全新的框架。SpringBoot是所有基于SpringFramerwork5.0开发的项目的的起点。SpringBoot的设计是为了我让你尽可快的跑起来,Spring应用程序并且尽可能减少了你的配置文件。

    设计目的:用来简化新的Spring应用的初始搭建以及开发过程。

      从根本上来说,Spring Boo就是一些库的集合,它能够被任意项目的构建系统所使用。它使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置)的理念让你的项目快速运行起来。用大佬的话来理解,就是Springboot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,springboot整合了所有的框架,总结一下就是一下几点:

     (1)为所有Spring开发提供了一个更快更广泛的入门体验。

      (2)零配置。无冗余代码生成和XML强制配置,遵循“约定大于配置”。

     (3)集成了大量常用的第三方库的配置,springboot应用为这些第三方库提供了几乎可以零配置的开箱即用的能力。

     (4)提供了一系列大型项目常用的非功能性特征,如嵌入式服务器、安全性、度量、运行状况检查、外部化配置等。

     (5)Springboot不是Spring的替代者,Spring框架是通过IOC机制来管理Bean的。Springboot依赖Spring框架来管理对象的依赖。SpringBoot并不是Spring的精简版本,而是为使用Spring做好各种产品级准备。

    SpringBoot在应用中的角色

      Springboot是基于Spring Framework来构建的,Spring Framework是一种J2EE的框架

      SpringBoot是一种快速构建Spring应用

      SpringCloud是构建SpringBoot分布式环境,也就是常说的云应用。

      SpringBoot中流砥柱,承上启下。

    环境准备:

    • (1)JDK 环境必须是 1.8 及以上
    • (2)后面要使用到 Maven 管理工具 3.2.5 及以上版本,所以会先介绍 Maven 的安装与配置
    • (3)开发工具建议使用 IDEA,也可以 MyEclipse,为了实现一站式服务

    使用 idea 快速搭建 Spring Boot

    第一步:新建 Spring Initializr 项目:

    (1)选择 Spring Initializr
    (2)选择 SDK,点击【new】这里就是使用 JAVA SDK 要求版本 1.8+,选择你默认安装在 C:Program FilesJavajdk1.8.0_191 目录:

    (3)然后选择默认的 url (不用管)点击【Next】:

    (4)然后填写一下项目的信息:

    (5)先勾选上 Web 依赖:

    (6)勾选 SQl 下的 MySQL,MyBatis 依赖:
    (根据自己的项目选择,后面可加)

    (7)选择好项目的位置,点击【Finish】:

    (7)如果是第一次配置 Spring Boot 的话可能需要等待一会儿 IDEA 下载相应的 依赖包,默认创建好的项目结构如下:

    项目结构还是看上去挺清爽的,少了很多配置文件,我们来了解一下默认生成的有什么:

    • SpringbootApplication: 一个带有 main() 方法的类,用于启动应用程序
    • SpringbootApplicationTests:一个空的 Junit 测试了,它加载了一个使用 Spring Boot 字典配置功能的 Spring 应用程序上下文
    • application.properties:一个空的 properties 文件,可以根据需要添加配置属性
    • pom.xml: Maven 构建说明文件

    第二步:HelloController

    在 【main/java/com.xpwi.springboot】包下新建一个【HelloController】:

    package com.xpwi.springboot;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 测试控制器
     *
     * @author: 
     * @create: 2018-11-18
     */
    @RestController
    public class HelloController {
    
        @RequestMapping("/hello")
        public String hello() {
            return "Hello Spring Boot!";
        }
    }

    第三步:利用 IDEA 启动 Spring Boot

    (1)我们回到 SpringbootApplication 这个类中,然后右键点击运行:

    2)会提示 Maven 导包,点击 import
    在这里插入图片描述

    (3)注意:我们之所以在上面的项目中没有手动的去配置 Tomcat 服务器,是因为 Spring Boot 内置了 Tomcat
    等待一会儿就会看到下方的成功运行的提示信息:

    (4)此时,可以看到我们的 Tomcat 运行在 8080 端口,我们来访问下面地址试一下:

    http://localhost:8080/hello

    在这里插入图片描述

    Spring Boot 项目文件介绍

    一、解析 pom.xml 文件:

    (1)让我们来看看默认生成的 pom.xml 文件中到底有些什么:

    <?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.xpwi</groupId>
        <artifactId>springboot</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>springboot</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.0.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>

    (2)我们可以看到一个比较陌生一些的标签 ,这个标签是在配置 Spring Boot 的父级依赖:

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

    有了这个,当前的项目才是 Spring Boot 项目,spring-boot-starter-parent 是一个特殊的 starter ,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签。

    关于具体 Spring Boot 提供了哪些 jar 包的依赖,我们可以查看本地 Maven 仓库下: epositoryorgspringframeworkootspring-boot-dependencies2.1.0.RELEASEspring-boot-dependencies-2.1.0.RELEASE.pom 文件来查看,挺长的…

    二、应用入口类 SpringbootApplication.java

    Spring Boot 项目通常有一个名为 *Application 的入口类,入口类里有一个 main 方法, 这个 main 方法其实就是一个标准的 Javay 应用的入口方法。

    @SpringBootApplication 是 Spring Boot 的核心注解,它是一个组合注解,该注解组合了:@Configuration、@EnableAutoConfiguration、@ComponentScan; 若不是用 @SpringBootApplication 注解也可以使用这三个注解代替。

    • 其中,@EnableAutoConfiguration 让 Spring Boot 根据类路径中的 jar 包依赖为当前项目进行自动配置,例如,添加了 spring-boot-starter-web 依赖,会自动添加 Tomcat 和 Spring MVC 的依赖,那么 Spring Boot 会对 Tomcat 和 Spring MVC 进行自动配置。
    • Spring Boot 还会自动扫描 @SpringBootApplication 所在类的同级包以及下级包里的 Bean ,所以入口类建议就配置在 grounpID + arctifactID 组合的包名下(这里为 com.xpwi.springboot 包)

    三、Spring Boot 的配置文件:

    Spring Boot 使用一个全局的配置文件 application.properties 或 application.yml,放置在【src/main/resources】目录或者类路径的 /config 下。

    Spring Boot 不仅支持常规的 properties 配置文件,还支持 yaml 语言的配置文件。yaml 是以数据为中心的语言,在配置数据的时候具有面向对象的特征。

    Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改。

    修改 properties 配置文件实例:

    (1)打开 resources 下的 application.properties

    (2)在这里我们可以设置访问的端口,将 Tomcat 默认端口设置为 8080 (默认的不修改) ,并将默认的访问路径从 “/” 修改为 “/cn” 时,再访问 http://localhost:8080/ 是什么都没有的,此时要访问 hello 是要使用 http://localhost:8080/cn/hello

    注意:如果是 yml 需要在 “:” 后加一个空格,幸好 IDEA 很好地支持了 yml 文件的格式有良好的代码提示;
    我们可以自己配置多个属性

    (3)使用 yml 文件作为配置文件,我们直接把 .properties 后缀的文件删掉,使用 .yml 文件来进行简单的配置

    (4)在然后使用在我们的 HelloController.java 类中使用 @Value 来获取配置属性,代码(请看注释):

    package com.xpwi.springboot;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 测试控制器
     *
     * @author: 
     * @create: 2018-11-18
     */
    @RestController
    public class HelloController {
    
        // 获取.yml 文件中值
        @Value("${name}")
        private String name;
    
        // 获取 age
        @Value("${csdnUrl}")
        private String csdnUrl;
    
        //路径映射,对应浏览器访问的地址,访问该路径则执行下面函数
        @RequestMapping("/hello")
        public String hello() {
            return name + " CSDN 博客:"+ csdnUrl;
        }
    }

    (5)重启 Spring Boot ,输入地址:http://localhost:8080/hello 能看到正确的结果:

    (6)【注意】: 我们并没有在 yml 文件中注明属性的类型,而是在使用的时候定义的。你也可以在配置文件中使用当前配置

    (7)任然可以得到正确结果:

    (8)【问题】: 这样写配置文件繁琐而且可能会造成类的臃肿,因为有许许多多的 @Value 注解。

    可以,封装配置信息

    封装配置信息使用方法:

    (1)application.yml 文件内容如下:

    (2)新建 author.java 和 HelloController.java 同级,内容如下:

    package com.xpwi.springboot;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Component
    @ConfigurationProperties(prefix = "author")
    public class author {
        private  String name;
    
        private  String csdnUrl;
    
        public String getCsdnUrl() {
            return csdnUrl;
        }
    
        public void setCsdnUrl(String csdnUrl) {
            this.csdnUrl = csdnUrl;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

    (3)此时可能会报错,如果报错,打开 pom.xml 文件,添加内容(注意位置):

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>

    (4)重新编写 HelloController 类,内容如下:

    package com.xpwi.springboot;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 测试控制器
     *
     * @author: @肖朋伟CSDN
     * @create: 2018-11-18
     */
    @RestController
    public class HelloController {
    
        // 获取.yml 文件中值
        //@Value("${name}")
        //private String name;
    
        // 获取 age
        //@Value("${csdnUrl}")
        //private String csdnUrl;
    
        @Autowired
        private author author;
    
        //路径映射,对应浏览器访问的地址,访问该路径则执行下面函数
        @RequestMapping("/hello")
        public String hello() {
            return "名字:" + author.getName() + " 地址:" + author.getCsdnUrl();
        }
    }

    (5)重启 Spring Boot,访问浏览器:

    http://localhost:8080/hello

    【提示】:我们可以把配置信息封装成一个类,首先在我们的 name 和 age 前加一个 student 前缀,然后新建一个 StudentProperties 的类用来封装这些信息,并用上两个注解:

    • @Component:表明当前类是一个 Java Bean
    • @ConfigurationProperties(prefix = “author”):表示获取前缀为 author 的配置信息
  • 相关阅读:
    结构体后面不加 ; 的后果。
    swap的两种错误写法
    rewind和fseek作用分析
    16个get函数的用法。
    枚举的简单使用。
    小知识点
    网线头的做法
    内存和寄存器
    linux下service mongod start启动报错
    appium上下文切换、webview调试以及chromedriver/键盘等报错问题解决
  • 原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/13956689.html
Copyright © 2011-2022 走看看