01.Spring Boot 实战~认识Spring Boot

01.Spring Boot 实战~认识Spring Boot

SpringBoot

        Spring Boot 是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了 Spring 众多框架中所需的大量且繁琐的配置文件,所以 SpringBoot 是一个服务于框架的框架,服务范围是简化配置文件。所以从本质上来说,SpringBoot 其实就是 Spring 框架的另一种表现形式。

        使用 SpringBoot 可以创建独立的 Spring 应用程序

        在Spring Boot中直接嵌入了Tomcat、 Jetty、 Undertow等Web容器, 所以在使用SpringBoot 做 Web 开发时不需要部署 WAR 文件。通过提供自己的启动器(Starter)依赖,简化项目构建配置 ,尽量的自动配置 Spring 和第三方库,提供了生产就绪特征,如:度量指标,运行状况检查和外部化配置,绝对没有代码生成,也不需要 XML 配置文件

        SpringBoot本质是Spring Framework,Spring Framework主要作用就是整合其他技术。所以学习Spring Boot就是在学习如何整合其他技术。

Spring Boot 版本

        SNAPSHOT : 开发版。

        CURRENT:最新版,不一定稳定。

        GA:GeneralAvailability,正式发布的版本。

通过IDEA Maven创建SpringBoot项目

关于Maven的使用可以点击这里

导入依赖

<?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.alvin</groupId>
  <artifactId>Spring Boot Study</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>Spring Boot Study Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <!--  SpringBoot 的父级依赖,只有继承它项目才是 Spring Boot 项目
        spring-boot-starter-parent 是一个特殊的 starter,
        它用来提供相关的 Maven 默认依赖。
        使用它之后,常用的包依赖可以省去 version 标签。
      -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.RELEASE</version>
  </parent>

  <!--
      启动器依赖
  -->
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>


  <!--
      spring-boot-maven-plugin 插件是将 springboot 的应用程序打包成 jar 包的插件。
      将所有 应用启动运行所需要的 jar 包都包含进来,从逻辑上将具备了独立运行的条件。
      当运行"mvn package"进行打包后,使用"java-jar"命令就可以直接运行。
   -->
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>

  </build>

</project>

启动类

        启动类在启动时会做注解扫描(@Controller、@Service、@Repository......),扫描 位置为同包或者子包下的注解,所以启动类的位置应放于包的根下。

启动类与启动器的区别:

        启动类表示项目的启动入口

        启动器表示 jar 包的坐标

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//启动类必须要有这个注解!
@SpringBootApplication
public class SpringBootDemoApplication {
    public static void main(String[] args) {
        //必须要通过SpringApplication下的静态方法run
        //第一个参数是启动类的class,第二个参数是main方法里的args
        SpringApplication.run(SpringBootDemoApplication.class,args);
    }
}

在这里插入图片描述

       SpringBoot 将所有的功能场景都抽取出来,做成一个个的 starter(启动器),只需要在项 目里面引入这些 starter 相关场景的所有依赖都会导入进来,要用什么功能就导入什么场景, 在 jar 包管理上非常方便,最终实现一站式开发。

SpringBoot 提供了多达 44 个启动器

spring-boot-starter SpringBoot 的核心启动器,包含了自动配置、日志和 YAML
spring-boot-starter-actuator 帮助监控和管理应用
spring-boot-starter-web 支持全栈式 Web 开发,包括 Tomcat 和 spring-webmvc
spring-boot-starter-amqp 通过 spring-rabbit 来支持 AMQP 协议(AdvancedMessage QueuingProtocol)
spring-boot-starter-aop 支持面向方面的编程即 AOP,包括 spring-aop 和 AspectJ
spring-boot-starter-artemis 通过 ApacheArtemis 支持 JMS 的 API(JavaMessage ServiceAPI)
spring-boot-starter-batch 支持 SpringBatch,包括 HSQLDB 数据库
spring-boot-starter-cache 支持 Spring 的 Cache 抽象
spring-boot-starter-cloud-connectors 支持 Spring Cloud Connectors,简化了在像 CloudFoundry 或 Heroku 这样的云平台上连 接服务。
spring-boot-starter-data-gemfire 支持 GemFire 分布式数据存储,包括 spring-data-gemfire
spring-boot-starter-data-jpa 支持 JPA(Java PersistenceAPI),包括 spring-data-jpa、spring-orm、Hibernate
spring-boot-starter-data-rest 通过 spring-data-rest-webmvc,支持通过 REST 暴露 Spring Data 数据仓库
spring-boot-starter-data-solr 支持 ApacheSolr 搜索平台,包括 spring-data-solr
spring-boot-starter-freemarker 支持 FreeMarker 模板引擎
spring-boot-starter-groovy-templates 支持 Groovy 模板引擎
spring-boot-starter-hateoas 通过 spring-hateoas 支持基于 HATEOAS 的 RESTfulWeb 服务
spring-boot-starter-hornetq 通过 HornetQ 支持 JMS
spring-boot-starter-integration 支持通用的 spring-integration 模块
spring-boot-starter-jdbc 支持JDBC数据库
spring-boot-starter-jersey 支持 JerseyRESTfulWeb 服务框架
spring-boot-starter-jta-atomikos 通过 Atomikos 支持 JTA 分布式事务处理
spring-boot-starter-jta-bitronix 通过 Bitronix 支持 JTA分布式事务处理
spring-boot-starter-mail 支持 javax.mail 模块
spring-boot-starter-mobile 支持 spring-mobile
spring-boot-starter-mustache 支持 Mustache 模板引擎
spring-boot-starter-redis 支持 Redis 键值存储数据库,包括 spring-redis
spring-boot-starter-security 支持 spring-security
spring-boot-starter-social-facebook 支持 spring-social-facebook
spring-boot-starter-social-linkedin 支持 pring-social-linkedin
spring-boot-starter-social-twitter 支持 pring-social-twitter
spring-boot-starter-test 支持常规的测试依赖,包括 JUnit、Hamcrest、Mockito 以及 spring-test 模块
spring-boot-starter-thymeleaf 支持 Thymeleaf 模板引擎,包括与 Spring 的集成
spring-boot-starter-velocity 支持 Velocity 模板引擎
spring-boot-starter-websocket 支持 WebSocket 开发
spring-boot-starter-ws 支持 SpringWebServices
spring-boot-starter-actuator 增加了面向产品上线相关的功能,比如测量和监控
spring-boot-starter-remote-shell 增加了远程 sshshell 的支持
spring-boot-starter-jetty 引入了 JettyHTTP 引擎(用于替换 Tomcat)
spring-boot-starter-log4j 支持 Log4J 日志框架
spring-boot-starter-logging 引入了 Spring Boot 默认的日志框架 Logback
spring-boot-starter-tomcat 引入了 Spring Boot 默认的 HTTP 引擎 Tomcat
spring-boot-starter-undertow 引入了 UndertowHTTP 引擎(用于替换 Tomcat)

文件的配置

       SpringBoot 提供一个名称为 application 的全局配置文件,支持两种格式 properteis 格式 与 YAML 格式。

在这里插入图片描述

       配置 Tomcat 监听端口

在这里插入图片描述

       基本格式要求,大小写敏感,使用缩进代表层级关系,并且相同的部分只出现一次。

server: 
	port: 7777

不同格式的加载顺序

        如 果 同 一 个 目 录 下 , 有 application.yml 也 有 application.properties, 默 认 先 读 取 application.properties。

        如果同一个配置属性,在多个配置文件都配置了,默认使用第 1 个读取到的,后面读取 的不覆盖前面读取到的。

不同位置的加载顺序

当前项目根目录下的一个/config 子目录中(最高)

config/application.properties

config/application.yml

当前项目根目录中(第二)

application.properties

application.yml

项目的 resources 即 classpath 根路径下的/config 目录中(第三)

resources/config/application.properties

resources/config/application.yml

项目的 resources 即 classpath 根路径中(最后)

resources/application.properties

resources/application.yml


第一个基于Spring Boot的Spring MVC项目

关于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.alvin</groupId>
  <artifactId>Spring Boot Study</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>Spring Boot Study Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.RELEASE</version>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>

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

  </build>

</project>

编写启动类(SpringBootDemoApplication)

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//启动类必须要有这个注解!
@SpringBootApplication
public class SpringBootDemoApplication {
    public static void main(String[] args) {
        //必须要通过SpringApplication下的静态方法run
        //第一个参数是启动类的class,第二个参数是main方法里的args
        SpringApplication.run(SpringBootDemoApplication.class,args);
    }
}

配置端口(application.properties)

server.port=7777

Spring MVC

@Controller
public class MyController {
    @RequestMapping("/helloworld")
    @ResponseBody
    public String show(){
        return "hello";
    }
}

       这个时候我们运行启动器就可以了,不需要运行tomcat,也不需要配置SpringMVC等文件,直接在浏览器输入地址就可以了!

在这里插入图片描述

SpringBoot 的核心注解

注解 说明
@SpringBootApplication 是 SpringBoot 的启动类。
此注解等同于@Configuration+@EnableAutoConfiguration+@ComponentScan 的组合。
@SpringBootConfiguration @SpringBootConfiguration 注解是@Configuration 注解的派生注解,跟@Configuration 注解的功能一致,标注这个类是一个配置类,只不过@SpringBootConfiguration 是 springboot 的注解,而@Configuration 是 spring 的注解
@Configuration 通过对 bean 对象的操作替代 spring 中 xml 文件
@EnableAutoConfiguration Spring Boot 自动配置(auto-configuration):尝试根据你添加的 jar 依赖自动配置你的 Spring 应用。是@AutoConfigurationPackage 和@Import(AutoConfigurationImportSelector.class) 注解的组合
@AutoConfigurationPackage @AutoConfigurationPackage 注解,自动注入主类下所在包下所有的加了注解的类 (@Controller,@Service 等),以及配置类(@Configuration)
@Import({AutoConfigurationImportSelector.class}) 直接导入普通的类
导入实现了 ImportSelector 接口的类
导入实现了 ImportBeanDefinitionRegistrar 接口的类
@ComponentScan 组件扫描,可自动发现和装配一些 Bean
@ConfigurationPropertiesScan @ConfigurationPropertiesScan 扫描配置属性。@EnableConfigurationProperties 注解的作 用是使用 @ConfigurationProperties 注解的类生效

猜你喜欢

转载自blog.csdn.net/qq_41424688/article/details/106891272
今日推荐