Spring Boot

Spring Boot 简介

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

Spring Boot特点

  1. 创建独立的Spring应用程序
  2. 嵌入的Tomcat,无需部署WAR文件
  3. 简化Maven配置
  4. 自动配置Spring
  5. 提供生产就绪型功能,如指标,健康检查和外部配置
  6. 绝对没有代码生成和对XML没有要求配置

Spring Boot 主要目标是

  • 为所有 Spring 的开发提供一个从根本上更快的入门体验

  • 开箱即用,但通过自己设置参数,即可快速摆脱这种方式。

  • 提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标,健康检测、外部化配置等

  • 绝对没有代码生成,也无需 XML 配置。

应用的全局配置文件

可以在Spring Boot项目的src/main/resources目录下或者在类路径下创建一个全局的配置文件application.properties或者application.yml的文件用于修改Spring Boot项目的默认配置值,例如修改项目的默认端口,或者进入DispatcherServlet的请求地址规则等。通常,在实际开发中我们习惯使用application.properties文件作为应用的全局配置文件,一般我们放到src/main/resources目录下。例如,在src/main/resources目录下创建一个名称为application.yml的文件,配置内容如下:

spring:
application:
name: spring-boot-demo
server:
port: 8080
servlet:
context-path: /demo

Starters启动器

Spring Boot为我们提供了简化项目开发的Starter启动器,例如我们在项目中使用的pom.xml文件下配置:

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

Spring Boot就会自动关联web开发相关的依赖,如Tomcat以及spring-webmvc等,进而对web开发进行支持,同时相关技术的配置也将实现自动配置,程序员即可从繁琐的配置文件中脱身而出了。除此之外,官方还提供了如下Starters:

  • spring-boot-starter:这是Spring Boot的核心启动器,包含了自动配置、日志和YAML文件的支持。

  • spring-boot-starter-activemq:为JMS使用Apache ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线

  • spring-boot-starter-amqp:通过spring-rabbit来支持AMQP协议(Advanced Message Queuing Protocol)。

  • spring-boot-starter-aop:支持面向方面的编程即AOP,包括spring-aop和AspectJ。

  • spring-boot-starter-artemis:通过Apache Artemis支持JMS的API(Java Message Service API)。

  • spring-boot-starter-batch:支持Spring Batch,包括HSQLDB数据库。

  • spring-boot-starter-cache:支持Spring的Cache抽象。

  • spring-boot-starter-cloud-connectors:支持Spring Cloud Connectors,简化了在像Cloud Foundry或Heroku这样的云平台上连接服务。

  • spring-boot-starter-data-cassandra:使用Cassandra分布式数据库、Spring Data Cassandra,Apache Cassandra是一套开源分布式NoSQL数据库系统。

  • spring-boot-starter-data-couchbase:使用Couchbase 文件存储数据库、Spring Data Couchbase。Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。

  • spring-boot-starter-data-elasticsearch:支持ElasticSearch搜索和分析引擎,包括spring-data-elasticsearch。

  • spring-boot-starter-data-gemfire:支持GemFire分布式数据存储,包括spring-data-gemfire。

  • spring-boot-starter-data-jpa:支持JPA(Java Persistence API),包括spring-data-jpa、spring-orm、Hibernate。

  • spring-boot-starter-data-ldap:支持 Spring Data LDAP。

  • spring-boot-starter-data-mongodb:支持MongoDB数据,包括spring-data-mongodb。

  • spring-boot-starter-data-neo4j:使用Neo4j图形数据库、Spring Data Neo4j Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。

  • spring-boot-starter-redis:支持Redis键值存储数据库,包括spring-redis。

  • spring-boot-starter-data-rest:通过spring-data-rest-webmvc,支持通过REST暴露Spring Data数据仓库。

  • spring-boot-starter-data-solr:支持Apache Solr搜索平台,包括spring-data-solr。

  • spring-boot-starter-freemarker:支持FreeMarker模板引擎。

  • spring-boot-starter-groovy-templates:支持Groovy模板引擎。

  • spring-boot-starter-hateoas:通过spring-hateoas支持基于HATEOAS的RESTful Web服务。

  • spring-boot-starter-integration:支持通用的spring-integration模块。

  • spring-boot-starter-jdbc:支持JDBC数据库。

  • spring-boot-starter-jersey:支持Jersey RESTful Web服务框架。

  • spring-boot-starter-hornetq:通过HornetQ支持JMS。

  • 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-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-web:支持全栈式Web开发,包括Tomcat和spring-webmvc。

  • spring-boot-starter-websocket:支持WebSocket开发。

  • spring-boot-starter-ws:支持Spring Web Services。

Spring Boot 自动配置的原理

Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入到Spring容器,进行自动配置。

开始开发 Spring Boot 应用

  • 起步依赖
<?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.andy</groupId>
<version>1.0.0.RELEASE</version>
<artifactId>spring-boot-demo</artifactId> <dependencyManagement>
<dependencies>
<dependency>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>Cairo-SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies> </project>
  • 启动类
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
  • 启动后访问localhost:8080/hello
@RestController
public class HelloWorldController { @RequestMapping("/hello")
public String hello() {
return "Hello,World!";
}
}

Spring Boot从入门到精通之:一、Spring Boot简介及快速入门的更多相关文章

  1. Spring Boot 揭秘与实战(二) 数据缓存篇 - 快速入门

    文章目录 1. 声明式缓存 2. Spring Boot默认集成CacheManager 3. 默认的 ConcurrenMapCacheManager 4. 实战演练5. 扩展阅读 4.1. Mav ...

  2. SpringBoot简介与快速入门

    一.SpringBoot简介 1.1 原有Spring优缺点分析 1.1.1 Spring的优点分析 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE ...

  3. Kotlin新语言简介和快速入门知识点

    Kotlin新语言简介和快速入门知识点 简介:Kotlin是最近由JetBrains发布的一种基于JVM的编程语言,已经被Google宣布为开发Android App的一级语言Kotlin有着与Jav ...

  4. Docker基础修炼1--Docker简介及快速入门体验

    本文作为Docker基础系列第一篇文章,将详细阐述和分析三个问题:Docker是什么?为什么要用Docker?如何快速掌握Docker技术? 本系列文章中Docker的用法演示是基于CentOS7进行 ...

  5. HTML常用标签简介及快速入门

    此HTML常用标签简介编写的目的,是给一个经常使用网页编辑器的一个朋友提供一个快速熟悉和入门HTML的途径. 现在分享出来,给其他有类似需求的朋友,此处只列出了编辑文章时最常用和遇到的标签,完整标签页 ...

  6. 终结篇:RemoteWebDriver与Grid简介-----Selenium快速入门(十五)

    Selenium的基本使用,已经介绍得差不多了,今天来简单说说RemoteWebDriver与Grid,也是本系列的最后一篇. 还记得本系列第一章(Selenium简介与环境搭配)的配置中,提到我们下 ...

  7. Spring Boot(一) 初步理解Spring Boot

    一.Spring Boot所解决的问题 Java开发十分笨重:繁多的配置.低下的开发效率.复杂的部署流程以头疼的第三方技术集成. Spring Boot的理念:习惯优于配置——项目中存在大量的配置,此 ...

  8. SpringBoot基础篇-SpringBoot快速入门

    SpringBoot基础 学习目标: 能够理解Spring的优缺点 能够理解SpringBoot的特点 能够理解SpringBoot的核心功能 能够搭建SpringBoot的环境 能够完成applic ...

  9. Springboot 完整搭建快速入门,必看!

    前言 手把手教你Springboot微服务项目搭建快速入门,通过本文学习Springboot的搭建快速入门,掌握微服务大致的配置服务,后续将会继续将核心组件引入到项目中,欢迎关注,点赞,转发. Spr ...

随机推荐

  1. CTR常见规则摘录

    1.给用户推荐热门的10个商品  . 2.对数据进行预处理,删除未购买过品牌的用户记录(不删除最近一周才出现的新用户),删除未被购买过的品牌记录,删除疯狂点击但是从不购买的刷钻用户记录等,利用一些简单 ...

  2. windows下安装nodejs以及python2502,2503解决方案

    1. 2053和2052为什么会出现出现这个提示的时候,是在程序安装步骤 到达copy new file的时候 进入下一步进行报错,可以推测出应该是软件包在安装的时候,解压缩部署核心文件的时候出错. ...

  3. Windows 10 IoT Core 17115 for Insider 版本更新

    今天,微软发布了Windows 10 IoT Core 17115 for Insider 版本更新,本次更新只修正了一些Bug,没有发布新的特性. 一些已知的问题如下: F5 driver depl ...

  4. 初探APT攻击

    首发于i春秋 作者:joe     所属团队:Arctic Shell 团队博客地址:https://www.cnblogs.com/anbus/   0x1:关于APT的相关介绍:     APT是 ...

  5. JSON Web Token(JWT)原理和用法介绍

    JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案.今天给大家介绍一下JWT的原理和用法. 官网地址:https://jwt.io/ 一.跨域身份验证 Internet服务无法与 ...

  6. Kali学习笔记33:Linux系统缓冲区溢出实验

    之前做过一个Windows应用SLmail的缓冲区溢出的实验 这次来做一个Linux平台的缓冲区溢出实验: 缓冲区溢出是什么? 学过汇编的应该知道,当缓冲区边界限制不严格时,由于变量传入畸形数据或程序 ...

  7. LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: Root WebApplicationContext: startup date [Sun Jan 13 17:59:19 CST 2019]; root of context hierarch

    在运行项目时出现了:LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via ...

  8. 关于I/O编程

    IO在计算机中指Input/Output,也就是输入和输出 由于程序在运行时,数据是驻留在内存中的,并由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口 IO编 ...

  9. Spring Boot 最核心的 3 个注解详解

    最近面试一些 Java 开发者,他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过.然而,当我问他们 Spring Boot 最核心的 3 个注解是什么,令我失望 ...

  10. MySQL基础整理(一)之SQL基础(未完成)

    大家好,我是浅墨竹染,以下是MySQL基础整理(一)之SQL基础 1.SQL简介 SQL(Structure Query Language)是一种结构化查询语言,是使用关系模型的数据库应用语言. 2. ...