Spring boot框架快速入门
Spring Boot是又Pivotal 团队提供的全新框架,其设计的目的是用来简化新Spring的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使得开发人员不在需要定义模板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者 - 《百度百科:Spring Boot》
Spring Boot
是所有基于Spring Framework 5.0
开发的项目的起点。Spring Boot的设计是为了让你尽可能快的跑起来Spring应用程序并且尽可能减少你的配置文件。
Spring Boot的设计目的很直观,就是为了简化新的Spring应用的初始搭建以及开发过程。
从最根本上来说,Spring Boot并不是新的框架,而是提供了默认配置的很多框架的集合。它能够在构建任意项目的时候使用,并且基本不需要进行配置。Spring Boot遵循使用优于配置的理念来使得你的项目能够快速运行起来,而不必花大量时间在代码生成和XML强制配置上。
Spring构建的项目存在大量的配置,但这里配置都包含一个默认的习惯性配置。如果你修改了Spring Boot的全局配置文件,你相当于是在修改默认配置的配置值。
Spring Boot 特点
(1) 为所有Spring开发提供一个更快更广泛的入门体验。
(2) 零配置。无冗余代码生成和XML强制配置,遵循约定大于配置。
(3) 集成了大量常用的第三方库及其配置。Spring Boot为这三第三方库提供了不需要配置的开箱即用的能力。
(4) 提供一系列大型项目常用的非功能特性,如嵌入式服务器
、安全性
、度量
、运行状况检查
、外部化配置
等。
(5) Spring Boot不是Spring的替代者,Spring框架是通过IOC机制来管理Bean的。Spring Boot依赖Spring框架来管理对象依赖。Spring Boot并不是Spring的精简版,而是做好了各种产品级应用准备的Spring。
Spring Boot 所具备的特征
(1) 可以创建独立的Spring程序,并且基于Maven或Gradle插件,可以创建可执行的JARs和WARs。
(2) 内嵌Tomcat或者Jetty等Servlet等容器。
(3) 提供自动配置的starter项目对象模型(POMS)以简化Maven配置。
(4) 尽可能自动配置Spring容器。
(5) 提供准备好的特性,如指标
、健康检查
和外部化
配置。
(6) 绝对没有代码生成,不需要XML配置。
Spring Boot在应用中的角色
基于Spring Framework,用于构建Spring Cloud。
Spring Boot是基于Spring Framework来构建的,Spring Framework是一种J2EE框架。
Spring Boot可以快速构建Spring 应用。 Spring Cloud是构建好的Spring Boot分布式环境,即云应用。 Spring是两者的中流砥柱,起到了承上启下的作用。
环境准备
- JDK 1.8及以上
- Maven管理工具
- IDE
Mave英文译为"专家",是Apache下的一个纯Java开发的开源项目。基于项目对象模型(POM)的概念,它利用一个中央信息片段来管理一个项目的构建、报告和文档等步骤。
Maven是一个项目管理工具,可以对Java项目进行构建、依赖管理。
Spring Boot项目文件
pom.xml
默认的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>
其中<parent>
标签比较陌生,它配置的是Spring Boot的父依赖,有了<parent>
标签,当前项目才是Spring Boot项目。spring-boot-starter-parent
是一个特殊的starter,它用来提供相关的Maven默认依赖。在加上它之后,常用的包依赖就可以省略掉version
标签。
Spring Boot所提供的jar包依赖可以在本地Maven仓库下的repisitoryorgspringframeworkbootspring-boot-dependencies2.1.0RELEASEspring-boot-dependencies-2.1.0.RELEASE.pom
文件中查看。
应用入口类SpringBootApplication.java
Spring Boot项目通常会有一个名为SpringBootApplication
的入口类,它有一个main方法,该方法即为标准的java应用的入口方法。
@SpringBootApplication
是Spring的核心注解,它是一个有三个注解组成的组合式注解。这三个注解包括:
@Configuration
@EnableAutoConfiguration
@ComponentScan
三者的作用如下:
-
@Configuration
同Spring,用来定义配置类,可替换XML配置。 -
@EnableAutoConfiguration
让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置。 -
@ComponentScan
同Spring,从定义的扫描路径中找出标示了需要装配的类自动装配到bean容器中。
SpringBoot还会自动扫描@SpringBootApplication
所在类的同级包以及下级包里的bean。因此入口类建议配置在groupID+artifactID
组合的包名下。
Spring配置文件
SpringBoot支持properties
文件和yaml
语言两种配置文件。SpringBoot使用两者之一作为全局配置文件。
yaml
是以数据为中心的语言,在配置数据的时候具有面向对象的特征。
重复一点,Spring Boot全局配置文件的作用是对一些默认配置的配置值进行修改。
参考
- 绝对定位下的盒模型
- 运行shell脚本时报错"[[ : not found"解决方法
- 关于表联结方法(二) (r4笔记第23天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(一)设计一套好的RESTful API
- XSS分析及预防
- 关于ORA-01779问题的分析和解决 (r4笔记第22天)
- 想看爱奇艺VIP视频?一个python脚本帮你搞定
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十四)Redis缓存正确的使用姿势
- 关于shell中的pl/sql脚本错误排查与分析(r4笔记第21天)
- 关于BFC不会被浮动元素遮盖的一些解释
- MyBatis + MySQL返回插入成功后的主键id
- struts2+spring+hibernate整合步骤(1)
- 微信公众号问题:{"errcode":40125,"errmsg":"invalid appsecret, view more at http://t.cn/LOEdzVq, hints: [
- reflow和repaint(摘录自张鑫旭的翻译)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Codeforces Round #622 (Div. 2) A.Fast Food Restaurant
- 渗透测试实战 | 一次信息泄露引发的越权
- Vue创建项目及基本语法 一
- 学 Java 开发怎么能不知道 Filter 与 Listener
- Windows 安装 MySQL 常见问题
- LootCode-链表排序-Java
- 好久不用 jQuery, 来复习一下
- Spring学习一、组件注册
- 复习 EL 表达式与 JSTL
- Spring 学习二、Bean生命周期相关注解
- 十分钟学会 HTML
- 聊一下会话跟踪技术
- 朝花夕拾之Matlab基础回顾:向量的点积、叉积、混合积
- 详解响应消息 response
- Kubernetes 1.19.0——deployment(3)