springBoot篇1概念创建和运行
Posted 革凡成圣211
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springBoot篇1概念创建和运行相关的知识,希望对你有一定的参考价值。
目录
一、什么是springBoot?为什么要学springBoot
一、什么是springBoot?为什么要学springBoot
在之前学习spring的时候,我们了解到:spring框架的诞生可以简化Java程序的开发。
springBoot翻译一下,就是spring框架的脚手架。
springBoot的优点:(5点)
优点1:快速集成框架
springBoot提供了各种启动依赖的功能,用于快速集成各种框架;
优点2:内置了Tomcat容器
内置了运行容器,无需额外配置Tomcat等等的Web容器。
SpringBoot内部内置了一个被打成jar包的Tomcat容器,当需要使用的时候就会调用它的API。
优点3:快速部署项目
不需要外部的容器即可启动并且运行项目,springBoot项目启动的时候只需要编写一个main方法,然后运行这个main方法。
之前的Servlet的时代,还需要安装smart Tomcat的插件。繁琐的的集成、部署操作,才可以运行项目。
优点4:少配置,多注解
springBoot不需要太多的配置文件,只需要在连接redis或者mysql的时候配置一下数据源即可。
优点5:支持更多的监控指标
通过这些指标,可以比较好地了解项目的运行情况。(例如有哪些bean等等)
SpringBoot的缺点
版本更新太快,并且不同的版本之间模块区别比较大。
二、springBoot项目的创建
如果idea编辑器是专业版的,那么点击左上角,直接选择新建spring initializr。
第一步:新建项目
第二步:添加一些框架支持
第三步:查看项目创建的状态
看到一个启动类,说明已经创建成功了
第四步:运行项目
运行启动类的main方法,如果看到输出了spring的标志,说明运行成功了。
SpringBoot的项目结构
启动类和其他类的关系
其他的类一定要和启动类在同一级的目录下面。(也就是和启动类要在同一个包下面,或者位于启动类的子包下面),这样才可以扫描到其他的类。
三、SpringBoot的配置文件
3.1配置文件的作用
存放重要信息
整个项目的所有重要的数据都是写在配置文件当中的,例如:
数据库的连接信息、项目的启动端口、第三方系统的日志信息等等;
如果没有配置文件,那么项目就无法连接数据库。
降低代码的耦合度
对于数据库连接等等的信息,不应当写在Java代码当中,应当写在配置文件当中。
场景1:
同时,对于配置文件当中的内容,也可以方便开发人员进行修改。
(如果写在.java文件当中,那么对于编译之后的.class文件,它是只读文件,无法修改)
场景2:
方便运维人员查看项目需要部署的服务器、数据库连接等等。
3.2配置文件的格式
配置文件的分类
1、 系统的配置文件:比如数据库连接字符串、比如日志的相关配置等等,这些是系统定义好的。
2、用户自定义的配置文件。例如用户想要读取的一些文件之类
配置文件的格式
一般都是两种,一种是.properties,另外一种是.yml
但是,无论哪一种格式,都必须要命名为application.yml或者application.properties
因为springBoot在启动的时候默认只读取名称为application的配置文件。
springBoot配置的规则(格式?冲突?)
规则1:一个项目当中可以存在两种配置文件(一种是properies,另外一种是yml),但是不建议同时出现两种。
规则2:如果.properties和.yml的配置文件内容冲突了, 那么会怎样处理?优先读取.properties的配置文件。
properies配置文件的语法
properies是以键值对的形式配置的。
同时,也可以在properies当中自定义配置文件的内容
如何读取配置文件的内容
使用@Value注解来读取配置文件当中的内容:server.port属性跟着的值
/**
* @author 25043
*/
@Component
public class ReadProperties
/**
* value当中的值为配置文件当中
* server.port的值
* 一定要加大括号
*/
@Value("$server.port")
private String port;
@PostConstruct
public void postConstruct()
System.out.println("yml当中的值:"+port);
properties缺点分析
对于一些key,它会有很多冗余的内容:
当多个key存在相同的部分的时候,需要一一把相同的部分列举出来,比较冗余。
yml配置文件
yml配置文件说明
yml是YAML的缩写,它的全称是:"Yet another Markup Language",yml是一个可读性高,易于理解,用来表达数据序列化的格式。
最大的优势:可以跨语言。
yml的特点:
1、写法简单、可读性高;
2、支持更多的数据类型(;
3、支持跨语言的使用:java/python
yml的语法
这个也是按照key-value的形式来进行存储的。
但是它的写法相比于properties更加地简洁。
当多个key存在重复的元素的时候,可以把这些key相同的部分都给提取出来。
properties:
yml对于单、双引号的问题
yml配置对象
多行的写法:
#对象写法1
student :
id : 1
name : 张三
age: 22
单行的写法:
#对象写法2
student2 : id : 2, name : 李四, age : 20
获取对象:
第一步:在properties当中存放一个对象:
第二步:新建一个和这个对象属性一模一样的实体类
第三步:把这个实体类注入到Spring容器当中(5大类注解)
第四步:从配置文件当中获取这个对象
第五步:从通过属性注入获取对象
yml配置集合
配置文件:
#dbtypes对应一个实体类
#name对应的是集合
dbtypes : name: [ mysql, sqlServer,db2 ]
注入集合:
获取bean:
properties和yml有什么区别(重要)
区别1:properties仅仅支持Java项目,但是yml支持包括Java在内的多种语言(例如python);
区别2:properties的key写起来比较冗余,不像yml那样简易。(yml支持层级,层级之间采用缩进的方式)
区别3:yml支持更多的数据类型(string,object,list)
四、指定文件读取
@PropertySource读取配置文件
这个注解可以作用在类的上面,同时指定读取哪一个配置文件。
如果没有这个注解,那么@Value注解默认读取的是application.properties文件当中的内容。
走进Java接口测试之流行框架SpringBoot(概念篇)
引言
说起 SpringBoot 不得不先了解一下 Spring 这个企业,不仅因为 Spring Boot 来源于 Spring 大家族,而是 Spring Boot 的诞生和 Sping 框架的发展息息相关。
Spring 历史
2002 年正是 Java EE 和 EJB 大行其道的时候,很多知名公司都是采用此技术方案进行项目开发。一个美国的小伙子 Rod Johnson 认为 EJB 太过臃肿,并不是所有的项目都需要使用 EJB 这种大型框架,应该会有一种更好的方案来解决这个问题。于是他写了一本书《 Expert One-on-One J2EE 》,介绍了当时 Java 企业应用程序开发的情况,并指出了 Java EE 和 EJB 组件框架中存在的一些主要缺陷。在这本书中他提出了一个基于普通 Java 类和依赖注入的更简单的解决方案,这也就是 Spring 的前身。
随后 Spring 发展进入快车道:
2004 年 03 月,1.0 版发布。
2006 年 10 月,2.0 版发布。
2007 年 11 月更名为 SpringSource,同时发布了 Spring 2.5。
2009 年 12 月,Spring 3.0 发布。
2013 年 12 月,Pivotal 宣布发布 Spring 框架 4.0。
2017 年 09 月,Spring 5.0 发布。
Spring 1.x 时代
在 Spring1.x 时代,都是通过 xml 文件配置 bean,随着项目的不断扩大,需要将 xml 配置分放到不同的配置文件中,需要频繁的在 java 类和xml 配置文件中切换。
Spring 2.x 时代
随着 JDK 1.5 带来的注解支持,Spring2.x 可以使用注解对 Bean 进行申明和注入,大大的减少了 xml 配置文件,同时也大大简化了项目的开发。 那么,问题来了,究竟是应该使用 xml 还是注解呢?
最佳实践:
应用的基本配置用 xml,比如:数据源、资源文件等;
业务开发用注解,比如:Service 中注入 bean 等;
Spring 3.x 到 Spring 4.x
从 Spring3.x 开始提供了 Java 配置方式,使用 Java 配置方式可以更好的理解你配置的 Bean,并且 Spring4.x 和SpringBoot 都推荐使用 java 配置的方式
在Java开发领域,Sping 应用很广,它的极致目标是简化Java开发,从2003年崭露头角至今,估计连 Rod Johnson 本人都没有想到,在 Java 领域,它会产生如此深远的影响。
SpringBoot 的诞生
随着使用 Spring 进行开发的个人和企业越来越多,Spring 也从单一简洁的小框架变成一个大而全的开源软件,Spring 的边界不断扩充,到了后来 Spring 几乎可以做任何事情了,可以集成了市面上主流的开源软件、中间件。 而Spring 每集成一个开源软件,就需要增加一些基础配置,慢慢的随着开发的项目越来越庞大,往往需要集成很多开源软件,因此后期使用 Spring 开发大型项目需要引入很多配置文件,太多的配置非常难以理解,并容易配置出错,到了后来人们甚至称 Spring 为配置灾难。
什么是Springboot
在上述环境下,SpringBoot 应运而生。它使用“习惯优于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须手动进行配置)的理念让 Java 项目快速运行起来。使用 SpringBoot 很容易创建一个独立运行(运行 Jar ,内嵌 Servlet 容器)、准生产级别的基于 Spring 的框架项目,使用 SpringBoot 你可以不用或者只需要很少的 Spring 配置。 用白话来理解,就是 SpringBoot 其实不是什么新框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,SpringBoot 整合了几乎所有的框架。
SpringBoot 特点
使用 Spring 项目引导页面可以在几秒构建一个项目
方便对外输出各种形式的服务,如 REST API、WebSocket、Web、Streaming、Tasks
非常简洁的安全策略集成
支持关系数据库和非关系数据库
支持运行期内嵌容器,如 Tomcat、Jetty
强大的开发包,支持热启动
自动管理依赖
自带应用监控
支持各种 IDE,如 IntelliJ IDEA 、NetBeans
SpringBoot 优势
SpringBoot 开发更简单
SpringBoot 对开发效率的提升是全方位的,我们可以简单做一下对比:
使用 Spring 我们开发一个 web 项目需要做哪些工作:
1)配置 web.xml,加载 Spring 和 Spring mvc
2)配置数据库连接、配置 Spring 事务
3)配置加载配置文件的读取,开启注解
4)配置日志文件
…
n) 配置完成之后部署 tomcat 调试 可能你还需要考虑各个版本的兼容性,jar 包冲突的各种可行性。
那么使用 SpringBoot 之后我们需要开发一个 web 项目需要哪些操作呢?
登录网址http://start.spring.io/选择对应的组件直接下载
导入项目,直接开发
上面的 N 步和下面的 2 步形成巨大的反差,这仅仅只是在开发环境搭建方面。
SpringBoot 测试更简单
SpringBoot 对测试的支持强大,SpringBoot 内置了 7 种强大的测试框架:
JUnit: 一个 Java 语言的单元测试框架
Spring Test & SpringBoot Test:为 Spring Boot 应用提供集成测试和工具支持
AssertJ:支持流式断言的 Java 测试框架
Hamcrest:一个匹配器库
Mockito:一个 java mock 框架
JSONassert:一个针对 JSON 的断言库
JsonPath:JSON XPath 库
只需要在项目中引入 spring-boot-starter-test 依赖包,就可以对数据库、Mock、 Web 等各种情况进行测试。
SpringBoot 配置更简单
SpringBoot 的核心思想:约定优于配置。
约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。
本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为 User 的类,那么数据库中对应的表就会默认命名为 user。只有在偏离这一约定时,例如将该表命名为 ”user_info”,才需写有关这个名字的配置。
SpringBoot 部署更简单
SpringBoot 内嵌容器,不仅仅让部署变得简单,其实在开发调试阶段也非常便利,对比以往 Spring 开发 Web 项目时配置 Tomcat 的繁琐。使用 SpringBoot 开发 Web 项目,让我们不需要关心容器的环境问题,专心写业务代码即可。
Jenkins 是目前持续构建领域使用最广泛的工具之一,使用 Jenkins 部署 SpringBoot 项目非常简单,大家想继续了解可以参考的文章:,只需要前期做一些简单的配置,所以 SpringBoot + Docker + Jenkins 会将 SpringBoot 项目的部署做得更简单。
Spring 、SpringBoot 和 SpringCloud 的关系
Spring 两大核心功能 Ioc 和 Aop 成就了 Spring,Spring 在这两大核心的功能上不断的发展,才有了 Spring 事务、Spring Mvc 等一系列伟大的产品,最终成就了 Spring 帝国,到了后期 Spring 几乎可以解决企业开发中的所有问题。
SpringBoot 是在强大的 Spring 帝国生态基础上面发展而来,发明 Spring Boot 不是为了取代 Spring ,是为了让人们更容易的使用 Spring 。所以说没有 Spring 强大的功能和生态,就不会有现在的 SpringBoot 火热, SpringBoot 使用约定优于配置的理念,重新重构了 Spring 的使用,让 Spring 后续的发展更有生命力。
Spring Cloud 是一系列框架的有序集合。它利用 SpringBoot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 SpringBoot 的开发风格做到一键启动和部署。
Spring 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 SpringBoot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Spring Cloud 是为了解决微服务架构中服务治理而提供的一系列功能的开发框架,并且 Spring Cloud 是完全基于 SpringBoot 而开发,Spring Cloud 利用 SpringBoot 特性整合了开源行业中优秀的组件,整体对外提供了一套在微服务架构中服务治理的解决方案。
综上所述,正是由于 Spring Ioc 和 Spring Aop 两个强大的功能才有了 Spring ,Spring 生态不断的发展才有了 SpringBoot ,使用 SpringBoot 让 Spring 更易用更灵活,Spring Cloud 是基于 SpringBoot 开发的一套微服务架构下的服务治理方案。
用一个简单的包含关系来表达它们之间的关系。
Spring ioc/aop > Spring > Spring Boot > Spring Cloud
小结
天下“武功”,为快不破。好的开源软件也应该如此,SpringBoot 的出现正是让 Java 编程变得更简单、更快速。
参考文献:
http://www.ityouknow.com/springboot/2018/06/12/spring-boo-java-simple.html
以上是关于springBoot篇1概念创建和运行的主要内容,如果未能解决你的问题,请参考以下文章