SpringBoot-1

本文详细介绍了SpringBoot框架,包括它的优点、微服务架构概念,以及快速入门教程。通过创建一个简单的“HelloWorld!”web应用展示了SpringBoot的使用。此外,还探讨了SpringBoot的配置、StarterPOMs、应用程序starters和执行器(Actuator)等功能,帮助开发者更好地理解和应用SpringBoot进行微服务开发。
摘要由CSDN通过智能技术生成

目录

前言

一、SpringBoot简介

1、SpringBoot优点

2、微服务架构

二、SpringBoot快速入门

1.接下来使用Java开发一个简单的“Hello World!” web应用来完成SpringBoot的快速入门。 我们将使用STS和Maven构建该项目。

2.代码基本解析

三、SpringBoot详解

1、配置项目继承 spring-boot-starter-parent 只需要简单地设置 parent 为: 

 2、Starter POMs

 3、下面的应用程序starters是SpringBoot在org.springframework.boot组下提供的:

 4、除了应用程序的starters, 下面的starters可以用于添加生产准备的特性。



前言

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


提示:以下是本篇文章正文内容,下面案例可供参考

一、SpringBoot简介

  spring boot并不是一个全新的框架,它不是spring解决方案的一个替代品,而是spring的一个封装。所以,以前可以用spring做的事情,现在用spring boot都可以做。

Spring boot就是一个非常好的微服务开发框架,可以使用它快速的搭建起一个系统。同时,你也可以使用spring Cloud(Spring Cloud是一个基于Spring Boot实现的云应用开发工具)来搭建一个分布式的网站。

1、SpringBoot优点

  • 使编码变得简单

SpringBoot采用Java config的方式,对Spring进行配置,并且提供了大量的注解,极大地提高了工作效率。

  • 使配置变得简单

spring boot提供许多默认配置,当然也提供自定义配置。但是所有spring boot的项目都只有一个配置文件:application.properties/application.yml。用了spring boot,再也不用担心配置出错找不到问题所在了。

功能的组合配置

部署环境配置

 

 

  •  使部署变得简单

 spring boot内置了三种servlet容器:tomcat,jetty,undertow

名称 

Servlet版本 

Java版本

Tomcat 8 

3.1

Java 7+

Tomcat 7 

3

Java 6+

Jetty 9 

3.1

Java 7+

Jetty 8 

3

Java 6+

Undertow 1.1 

3.1

Java 7+

 所以,只需要一个Java的运行环境就可以运行SpringBoot的项目了。

SpringBoot的项目可以打成一个jar包,然后通过java -jar xxx.jar来运行。

(SpringBoot项目的入口是一个main方法,运行该方法即可。 )

也可以将Spring Boot应用部署到任何兼容Servlet 3.0+的容器

  • 使监控变得简单

SpringBoot提供了actuator包,可以使用它来对应用进行监控。 

2、微服务架构

       微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。SpringBoot就是搭建微服务的一个很好的选择。

       微服务一般都是运行在分布式环境中的,这可不是简单的写一个SSM框架的小程序就可以解决的,其中需要用到很多技术,比如负载均衡,反向代理,服务治理,配置管理,消息总线等,SpringCloud提供了这些技术。并且,SpringCloud生态是基于spring boot的。


二、SpringBoot快速入门

1.接下来使用Java开发一个简单的“Hello World!” web应用来完成SpringBoot的快速入门。 我们将使用STS和Maven构建该项目。

  • 首先构建SpringBoot项目:

  •  设置项目参数

  •  项目创建后的目录结构:

 

 此时已经生成包含勾选依赖的pom文件,勾选后需要添加依赖可以直接修改pom文件

  •  直接在主类上添加响应请求的代码:
  • 运行结果·: 

 

2.代码基本解析

  1.  主类上使用的第一个注解是 @RestController ,对于Spring, 该类扮演了一个特殊角色。在本示例中, 我们的类是一个WEB Controller ,所以当处理进来的web 请求时, Spring会使用它来进行响应。
  2. @RequestMapping 注解提供路由信息。 它告诉Spring任何来自"/"路径的HTTP请求都应该被映射到 home 方法。 @RestController 注解告诉Spring以字符串的形式渲染结果, 并直接返回给调用者。
  3. @RestController和@RequestMapping注解是Spring MVC注解(它们不是Spring Boot的特定部分)
  4. 第二个类级别的注解是 @EnableAutoConfiguration 。 这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于 spring-boot-starter-web 添加了Tomcat和Spring MVC, 所以auto-configuration将假定我们正在开发一个web应用并相应地对Spring进行设置。//Starter POMs和Auto-Configuration:设计auto-configuration的目的是更好的使用“Starter POMs”, 但这两个概念没有直接的联系。 我们可以自由地挑选starter POMs以外的jar依赖, 并且Spring Boot将仍旧尽最大努力去自动配置你的应用。


三、SpringBoot详解

1、配置项目继承 spring-boot-starter-parent 只需要简单地设置 parent 为: 

  •  如果不使用 spring-boot-starter-parent , 通过使用一个 scope=import 的依赖, 仍能获取到依赖管理的好处:

  •  spring-boot-starter-parent 选择相当保守的Java兼容策略。 如果希望使用指定的Java版本, 可以添加一个 java.version 属性:

  •  Spring Boot包含一个Maven插件, 它可以将项目打包成一个可执行jar。 如果想使用它, 你可以将该插件添加到 <plugins>点处:

 2、Starter POMs

       Starter POMs是可以包含到应用中的一个方便的依赖关系描述符集合。 可以获取所有Spring及相关技术的一站式服务, 而不需要翻阅示例代码, 拷贝粘贴大量的依赖描述符。 例如, 如果你想使用Spring和JDBC进行数据库访问, 只需要在你的项目中包含spring-boot-starter-jdbc依赖, 然后你就可以开始了。该starters包含很多你搭建项目, 快速运行所需的依赖, 并提供一致的, 管理的传递依赖集。

 3、下面的应用程序starters是SpringBoot在org.springframework.boot组下提供的:

名称 

描述

spring-boot-starter 

核心Spring Boot starter, 包括自动配置支持, 日志和YAML

spring-boot-starter-actuator 

生产准备的特性, 用于帮你监控和管理应用

spring-boot-starter-amqp 

对"高级消息队列协议"的支持, 通过 spring-rabbit 实现

spring-boot-starter-aop 

对面向切面编程的支持, 包括 spring-aop 和AspectJ

spring-boot-starter-batch 

对Spring Batch的支持, 包括HSQLDB数据库

spring-boot-starter-cloudconnectors

对Spring Cloud Connectors的支持, 简化在云平台下(例如, Cloud Foundry 和Heroku) 服务的连接

spring-boot-starter-dataelasticsearch 

对Elasticsearch搜索和分析引擎的支持, 包括spring-data-elasticsearch

名称 

描述

spring-boot-starter-datagemfire 

对GemFire分布式数据存储的支持, 包括 spring-data-gemfire

spring-boot-starter-data-jpa 

对"Java持久化API"的支持, 包括 spring-data-jpa , spring-orm 和Hibernate

spring-boot-starter-datamongodb 

对MongoDB NOSQL数据库的支持, 包括 spring-data-mongodb

spring-boot-starter-data-rest 

对通过REST暴露Spring Data仓库的支持, 通过 spring-data-rest-webmvc 实现

spring-boot-starter-data-solr 

对Apache Solr搜索平台的支持, 包括 spring-data-solr

spring-boot-starter-freemarker 

对FreeMarker模板引擎的支持

spring-boot-starter-groovytemplates 

对Groovy模板引擎的支持

spring-boot-starter-hateoas 

对基于HATEOAS的RESTful服务的支持, 通过 spring-hateoas 实现

名称 

描述

spring-boot-starter-hornetq 

对"Java消息服务API"的支持, 通过HornetQ实现

spring-boot-starter-integration 

对普通 spring-integration 模块的支持

spring-boot-starter-jdbc 

对JDBC数据库的支持

spring-boot-starter-jersey 

对Jersey RESTful Web服务框架的支持

spring-boot-starter-jtaatomikos 

对JTA分布式事务的支持, 通过Atomikos实现

spring-boot-starter-jta-bitronix 

对JTA分布式事务的支持, 通过Bitronix实现

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-socialfacebook 

对 spring-social-facebook 的支持

spring-boot-starter-sociallinkedin 

对 spring-social-linkedin 的支持

spring-boot-starter-socialtwitter 

对 spring-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服务的支持

 4、除了应用程序的starters, 下面的starters可以用于添加生产准备的特性。

名称 

描述

spring-boot-starter-actuator 

添加生产准备特性, 比如指标和监控

spring-boot-starter-remote-shell 

添加远程 ssh shell支持

  • 如果要查看应用指标或对应用进行监控,可以加入执行器actuator的依赖:

 执行器接口允许监控应用及与应用进行交互。 SpringBoot包含很多内置的接口, 也可以添加自己的,例如,health端点提供了应用的基本健康信息

  •  接口暴露的方式取决于采用的技术类型。大部分应用选择HTTP监控, 接口的ID映射到一个URL。 例如,默认情况下,health端点将被映射到/health。:

ID 

描述 

敏感(Sensitive)

autoconfig 

显示一个auto-configuration的报告, 该报告展示所有auto-configuration候选者及它们被应用或未被应用的原因 

true

beans 

显示一个应用中所有Spring Beans的完整列表 

true

configprops 

显示一个所有@ConfigurationProperties的整理列表 

true

dump 

执行一个线程转储 

true

env 

暴露来自Spring ConfigurableEnvironment的属性 

true

  • 更多的执行器接口:

ID 

描述 

敏感(Sensitive)

health 

展示应用的健康信息(当使用一个未认证连接访问时显示一个简单的'status', 使用认证连接访问则显示全部信息详情) 

false

info 

显示任意的应用信息 

false

metrics 

展示当前应用的'指标'信息 

true

mappings 

显示一个所有@RequestMapping路径的整理列表 

true

shutdown 

允许应用以优雅的方式关闭(默认情况下不启用) 

true

trace 

显示trace信息(默认为最新的一些HTTP请求) 

true

  • 验证执行器访问 

在项目中加入执行器依赖:

 启动后访问执行器接口映射:

  • 修改执行器访问端口,和业务系统分离:

自定义监控端口

 执行器端口和接口:

 

  •  敏感信息访问限制

 在端口列表中,敏感为false的,表示可以随意访问,否则就是做了一些保护,不能随意访问,如果需要关闭敏感保护,则可以将对应的端口的sensitive属性设置为false,如endpoints.mappings.sensitive=false

敏感方法默认是需要用户拥有ACTUATOR角色,因此,也可以设置关闭安全限制:management.security.enabled=false

  • 自定义系统信息

 可以在配置文件中提供自定义的系统信息供执行器监控端口查看

 自定义项目Info信息,通过设置配置文件属性info.*, 可以定义info端点暴露的数据。 所有在info关键字下的Environment属性都将被自动暴露。

  •  显式设置的自定义属性

  •  SpringApplication类提供了一种从main()方法启动Spring应用的便捷方式。 在很多情况下, 只需委托给SpringApplication.run这个静态方法:

  •  当应用启动时, 应该会看到类似下面的东西:

默认情况下会显示INFO级别的日志信息, 包括一些相关的启动详情, 比如启动应用的用户等。

 通过在classpath下添加一个banner.txt或设置banner.location来指定相应的文件可以改变启动过程中打印的banner(即启动时正常日志前拼接出来的Spring部分)。 如果这个文件有特殊的编码, 可以使用banner.encoding设置它(默认为UTF-8) 。在banner.txt中可以使用如下的变量:

名称 

描述

${application.version}

MANIFEST.MF中声明的应用版本号, 例如1.0

${application.formattedversion}

MANIFEST.MF中声明的被格式化后的应用版本号(被括号包裹且以v作为缀) , 用于显示, 例如(v1.0)

${spring-boot.version}

正在使用的Spring Boot版本号, 例如1.5.0.BUILD-SNAPSHOT

${spring-boot.formatted-version}

正在使用的Spring Boot被格式化后的版本号(被括号包裹且以v作为缀) , 用于显示, 例如(v1.5.0.BUILD-SNAPSHOT)

  • 自定义Banner: 

 在classpath中新建banner.txt

 


  •  使用application.properties文件来配置SpringApplication

       如果想获取原始的命令行参数, 或一旦SpringApplication启动后需要运行一些特定的代码, 可以实现CommandLineRunner接口。 在所有实现该接口的Spring beans上将调用run(String… args)方法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值