zoukankan      html  css  js  c++  java
  • SrpingBoot简介及使用

      SpringBoot设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

    一、SpringBoot简介

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

    • 为所有 Spring 开发提供一个更快更广泛的入门体验。
    • 零配置。无冗余代码生成和XML 强制配置,遵循“约定大于配置” 。
    • 集成了大量常用的第三方库的配置, Spring Boot 应用为这些第三方库提供了几乎可以零配置的开箱即用的能力。
    • 提供一系列大型项目常用的非功能性特征,如嵌入式服务器、安全性、度量、运行状况检查、外部化配置等。
    • Spring Boot 不是Spring 的替代者,Spring 框架是通过 IOC 机制来管理 Bean 的。Spring Boot 依赖 Spring 框架来管理对象的依赖。Spring Boot 并不是Spring 的精简版本,而是为使用 Spring 做好各种产品级准备

      SpringBoot框架中还有两个非常重要的策略:开箱即用和约定优于配置。开箱即用,Outofbox,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。约定优于配置,Convention over configuration,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。

    SpringBoot在应用中的角色

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

    Spring Boot 是一种快速构建 Spring 应用

    Spring Cloud 是构建 Spring Boot 分布式环境,也就是常说的云应用

    Spring Boot 中流砥柱,承上启下

    二、SpringBoot实例

    使用idea快速构建一个springboot项目

    构建完成之后的项目结构

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

    新建一个HelloController类

    @RestController
    public class HelloController {
    
        @RequestMapping("/hello")
        public String hello() {
            return "hello,this is a springboot demo";
        }
    
    }

    在idea中启动SpringBootAppliction类

    这个时候在网页访问地址http://localhost:8080/hello

     SpringBoot项目文件介绍

    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 https://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.3.3.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <groupId>com.example</groupId>
        <artifactId>springboot</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>springboot</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <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>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    父级依赖为org.springframework.boot,有了这个依赖,当前项目就是springboot项目,如果想查看具体的jar包文件,可以通过地址到设置好的本地仓库进行查看

    应用入口类 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实例

    server.port=8080
    server.servlet.context-path=/china
    
    demo.name=yang
    demo.url=https://www.cnblogs.com/yfstudy/

    这里我们设置访问的端口号为8080,将默认的访问路径从/改为/china,这里如果要访问的话地址更改为http://localhost:8080/china/hello,增加了两个配置,修改下类文件

    @RestController
    public class HelloController {
    
        @Value("${demo.name}")
        private String name;
    
        @Value("${demo.url}")
        private String url;
    
        @RequestMapping("/hello")
        public String hello() {
            return "hello,this is "+name+url;
        }
    
    }

    重启SpringBoot,查看结果

     三、springboot热部署

    1、在maven配置中导入 spring-boot-devtools 依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>

    2、在maven配置中添加插件

     <configuration>
       <fork>true</fork>
       <addResources>true</addResources>
    </configuration>

    3、springboot配置文件添加配置

    #配置项目热部署
    spring.devtools.restart.enabled=true

    4、在idea中设置自动编译

     5、按住ctrl + shift + alt + /,点击Registry...,勾选compiler.automake.allow.when.app.running后关闭即可

     6、接下来检验是否热部署成功

    package com.example.springboot;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
    
        @Value("${demo.name}")
        private String name;
    
        @Value("${demo.url}zzc")
        private String url;
    
        @RequestMapping("/hello")
        public String hello() {
            return "hello listen,this is "+name+url;
        }
    
    
    }

     添加内容后

    package com.example.springboot;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
    
        @Value("${demo.name}")
        private String name;
    
        @Value("${demo.url}zzc")
        private String url;
    
        @RequestMapping("/hello")
        public String hello() {
            return "hello listen,this is "+name+url;
        }
    
        @RequestMapping("/getUser")
        public User getUser(){
            User user = new User();
            user.setUserName("小明");
            user.setPassWord("xxxx");
            return user;
        }
    }

  • 相关阅读:
    【剑指Offer】面试题14- I. 剪绳子
    【剑指Offer】面试题56
    【LeetCode】202. 快乐数
    【LeetCode】1095. 山脉数组中查找目标值
    【LeetCode】260. 只出现一次的数字 III
    【剑指Offer】面试题56
    【LeetCode】33. 搜索旋转排序数组
    【LeetCode】23. 合并K个排序链表
    【LeetCode】46. 全排列
    mysql可视化工具下载地址2017.6.27
  • 原文地址:https://www.cnblogs.com/yfstudy/p/13526433.html
Copyright © 2011-2022 走看看