SpringBoot快速入门(一)

一SpringBoot简介

1.spring开发经历的阶段

Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的轻量级代替品。无需开发重量级的 Enterprise JavaBean(EJB),Spring 为企业级Java 开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java 对象(Plain Old Java Object,POJO)实现了 EJB 的功能。虽然 Spring 的组件代码是轻量级的,但它的配置却是重量级的。 (IOC容器--控制反转 AOP-面向切面编程)

  • 第一阶段:xml配置:在Spring 1.x时代,使用Spring开发满眼都是xml配置的Bean,随着项目的扩大,我们需要把xml配置文件放到不同的配置文件里,那时需要频繁的在开发的类和配置文件之间进行切换
  • 第二阶段:注解配置:在Spring 2.x 时代,随着JDK1.5带来的注解支持,Spring提供了声明Bean的注解(例如@Component、@Service),大大减少了配置量。
  • 第三阶段:java配置管理 :Annotation的出现是为了简化Spring的XML配置文件,但Annotation不如XML强大,所以无法完全取代XMl文件 。例如:@Configuration、@Import等。

所有这些配置都代表了开发时间的损耗。 因为在思考 Spring 特性配置和解决业务问题之间需要进行思维切换,所以写配置挤占了写应用程序逻辑的时间。除此之外,项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这难题实在太棘手。并且,依赖管理也是一种损耗,添加依赖不是写应用程序代码。一旦选错了依赖的版本,随之而来的不兼容问题毫无疑问会是生产力杀手。

Spring Boot 让这一切成为了过去。

  • 起步依赖--pom:本质是Maven项目对象模型中的标签。它定义其SpringBoot对他库的传递依赖,依赖加在一起即可支持某项功能。最厉害的就是这个,使得SpringBoot具备了构建一切的能力:整合所有牛×框架
  • 自动配置--全部的配置文件:基于约定优于配置思想,配置基本都可以走默认值。配置基本都是SpringBoot自动完成

2. springboot简介

需要注意的是:springboot是一项新的框架--不是一项新的语言和新的技术

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

mian Spring Boot 简化了基于Spring的应用开发,只需要“run”就能创建一个独立的、生产级别的Spring应用。Spring Boot为Spring平台及第三方库提供开箱即用的设置(提供默认设置),这样我们就可以简单的开始。多数Spring Boot应用只需要很少(额外)的Spring配置。我们可以使用SpringBoot创建java应用,并使用java –jar 启动它,或者采用传统的war部署方式。

说白了就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架。SpringBoot不是对Spring功能的增强,而是提供一种快速使用Spring的开发方式(全新的开发方式)。

二 SpringBoot快速入门

2.1 springboot的好处

简单,快速,方便

用springmvc搭建一个SpringWeb项目则需要以下步骤

  • 创建maven工程
  • 导入相关依赖的jar包
  • 编写springmvc核心配置文件
  • 编写web.xml文件
  • 编写XxxController

看似不是很麻烦,但是如果说这个项目仅仅做一个很简功能,比如说只是发一个邮件,那么每次都要这么来一遍。

但是如果用SpringBoot实现呢?

很简单只需要用Spring initializr方式创建一个springboot工程配置文件,

使用SpringBoot只需要关注业务逻辑,而不用关注框架!

2.2 Spring initializr方式搭建SpringBoot工程

1.通过idea工具创建工程时,不要选择maven而是要选择spring initializr。然后去勾选相关依赖。

  • 编写controller
@RestController
public class HelloController { /**
* 请求/hello输出hello springboot!
* @return
*/
@GetMapping(value = "/hello")
public String hello(){
return "hello springboot! ";
} }
  • 测试

访问:http://locahost:8080/hello

在这个工程中我没有启动tomcat,其实这台电脑就没有装tomcat,但是却可以正常访问localhost:8080,这是SpingBoot以及帮我们集成好的,同时配置文件也是空的!

三 SpringBoot原理分析

1 SpringBoot-起步依赖

我们可以打开pom.xml中的parent,并查看spring-boot-starter-parent信息。

从上面的spring-boot-dependencies的pom.xml中可以看出,坐标的版本,依赖管理,插件管理已经预先定义好了。SpringBoot工程继承Spring-boot-starter-parent后,已经锁定了版本等配置。起步依赖的作用是进行依赖传递 。用啥取啥,随用随取即可。我们开发中彻底不用关心:jar包的版本、依赖等问题了,大大降低版本冲突,版本过期,更新一个jar一下就需要升级一个tree的jar包。

相当于我们之前学习的过程中创建的父工程,在之前创建的父工程中,其中一个功能是用来统一管理jar包。这里的父工程其实作用是一样的。

parent的版本和jar包管理,2.以及坐标引入利用maven的依赖传递的性质,共同实现了起步依赖

2 SpringBoot-自动配置

(1)@SpringBootApplication

该注解是一个组合注解,包括如下注解

  • @SpringBootConfiguration:与之前@Configuration注解一样,声明为一个配置类
  • @ComponentScan:spring IoC容器的扫描包,默认扫描引导程序下的包以及子包,如果我们写的程序不在该包范围内,可以通过该注解指定。
  • @EnableAutoConfiguration:springboot实现自动化配置的核心注解。

(2)@SpringBootConfiguration

通过这段我们可以看出,在这个注解上面,又有一个@Configuration注解。通过上面的注释阅读我们知道:这个注解的作用就是声明当前类是一个配置类,然后Spring会自动扫描到添加了@Configuration的类,并且读取其中的配置信息。而@SpringBootConfiguration是来声明当前类是SpringBoot应用的配置类,项目中只能有一个。所以一般我们无需自己添加。

(3)@EnableAutoConfiguration

@EnableAutoConfiguration告诉Spring Boot基于你所添加的依赖,去“猜测”你想要如何配置Spring。比如我们引入了spring-boot-starter-web,而这个启动器中帮我们添加了tomcatSpringMVC的依赖。此时自动配置就知道你是要开发一个web应用,所以就帮你完成了web及SpringMVC的默认配置了!

自动配置:自己一般不用修改配置,默认的配置都给配好了。

四 SpringBoot配置文件使用

1 application.properties

(1) 语法

(2)案例

在resources目录下新建application.properties

#tomcat port
server.port=8088
#app context
server.servlet.context-path=/test



此时运行,tomcat端口发生了变化,每次请求,需要加上=/test。

3.2 application.yml(application.yaml)

(1)语法

普通数据:

说明:
key: value(注意:冒号有一个空格) 示例:
name: tom

对象数据或map

#说明:
key:
key1: value1
key2: value2
#示例:
user:
xiaobai:
name: tom
age: 23
addr: beijing

集合数据1:存储简单类型

说明:
key:
value1
value2
或:
key: value1,value2 示例:
city:
beijing
anhui
jiangxi
shenzhen
或:
city: [beijing,anhui,jiangxi,shenzhen]

集合数据2:存储对象类型

说明:
key:
key1: vlaue1
key2: value2 示例:
student:
- name: zhangsan
age: 23
addr: BJ
- name: lisi
age: 25
addr: SZ

(2)案例

将springboot-demo1中的application.properties换成application.yml,代码如下:

server:
port: 18081
servlet:
context-path: /demo

如图:

3 配置文件与配置类的属性映射方式

(1)使用注解@Value映射

@value注解将配置文件的值映射到Spring管理的Bean属性值

(2)使用注解@ConfigurationProperties映射

通过注解@ConfigurationProperties(prefix=''配置文件中的key的前缀")可以将配置文件中的配置自动与实体进行映射。

使用@ConfigurationProperties @Compment方式必须提供Setter方法,使用@Value注解不需要Setter方法。

注意使用该注解需要引入如下依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

SpringBoot快速入门(实战篇一)的更多相关文章

  1. SpringBoot学习(四)-->SpringBoot快速入门,开山篇

    Spring Boot简介 Spring Boot的目的在于创建和启动新的基于Spring框架的项目.Spring Boot会选择最适合的Spring子项目和第三方开源库进行整合.大部分Spring ...

  2. Springboot快速入门篇,图文并茂

    Springboot快速入门篇,图文并茂 文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star!搜索关注微信公众号 [码出Offer] 领取各种学习资料! image-20 ...

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

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

  4. SpringData 基于SpringBoot快速入门

    SpringData 基于SpringBoot快速入门 本章通过学习SpringData 和SpringBoot 相关知识将面向服务架构(SOA)的单点登录系统(SSO)需要的代码实现.这样可以从实战 ...

  5. 版本控制工具Git工具快速入门-Linux篇

    版本控制工具Git工具快速入门-Linux篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.版本管理系统的介绍 1>.版本管理系统的特点 1.1>.自动生成备份: ...

  6. SPRING-BOOT系列之SpringBoot快速入门

    今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...

  7. 版本控制工具Git工具快速入门-Windows篇

    版本控制工具Git工具快速入门-Windows篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Golang语言,之前的开发环境在linux上开发的,后来由于办公用的是w ...

  8. webpack快速入门——实战技巧:watch的正确使用方法,webpack自动打包

    随着项目大了,后端与前端联调,我们不需要每一次都去打包,这样特别麻烦,我们希望的场景是,每次按保存键,webpack自动为我们打包,这个工具就是watch! 因为watch是webpack自带的插件, ...

  9. webpack快速入门——实战技巧:开发和生产并行设置

    package.json中,devDependencies和dependencies是不同的 devDependencies:开发依赖 dependencies:生产依赖(线上) 1.安装生产环境的依 ...

随机推荐

  1. Python_PyQt5_库

    QtQWidgets  小组件(暂无资料,但是Python中做窗口/网页时用的很多  *-*)  QtCore 模块包括了核心的非GUI功能,该模块用来对时间.文件.目录.各种数据类型.流.网址.媒体 ...

  2. 推荐一个学习SQL Server基本语法及其他编程的网站

    菜鸟们的练习场 1.领先的 Web 技术教程 在 w3school,你可以找到你所需要的所有的网站建设教程. 从基础的 HTML 到 CSS,乃至进阶的XML.SQL.JS.PHP 和 ASP.NET ...

  3. PL/SQL Developer 13注册码(亲测可用)

    product code: 4vkjwhfeh3ufnqnmpr9brvcuyujrx3n3le serial Number: 226959 password: xs374ca

  4. 玩转百度地图API(地图,坐标,标记,添加控件,2D图,混合图,智能搜索,地址解析器,信息窗口)

    1.注册得到appkey 2.直接上代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Conte ...

  5. 异或加密 - cr2-many-time-secrets(攻防世界) - 异性相吸(buuctf)

    Crib dragging attack 在开始了解 Crib dragging attack 之前,先来理一理 异或. 异或加密 [详情请戳这里] XOR 加密简介 异或加密特性: ① 两个值相同时 ...

  6. BT下载器Folx中删除任务与删除文件的功能区别

    当用户使用Folx完成了任务下载后,该任务仍会保留在下载列表中,并标注"已结束"的标记.随着使用时间的增长,Folx下载列表中会包含过多的"已结束"任务,用户需 ...

  7. 怎么用MindManager2019去做一个好的网络图

    大家知道网络图吗?是由作业(箭线).事件(又称节点)和路线三个因素组成的.它是一种图解模型,形状如同网络,故称为网络图.运用网络图能够使步骤简洁明了,今天我我们就说一说网络图软件MindManager ...

  8. 「LOJ #6500」「雅礼集训 2018 Day2」操作

    description LOJ 6500 solution 根据常有套路,容易想到将区间差分转化为异或数组上的单点修改,即令\(b_i=a_i \ xor\ a_{i-1}\), 那么将\([l,l+ ...

  9. 实用主义当道——GitHub 热点速览 Vol.48

    作者:HelloGitHub-小鱼干 当你看到实用为本周的关键词时,就应该知道本周的 GitHub 热点霸榜的基本为高星老项目,例如:知名的性能测试工具 k6,让你能在预生产环境和 QA 环境中以高负 ...

  10. JS 使用xlsx.core.js 数据导出到excel

    /* 通用导出数据 需要引入 xlsx.core.js * data:数据 * th:表头 * filename:导出表格名称 */ var data = []; var th = [ [" ...