Springboot入门介绍
一、Spring框架概述
1.1 什么是Spring
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》。Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。但是Spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合性等方面从Spring中获益。
1.2 Spring是如何简化Java开发的
为了降低Java开发的复杂性,Spring采用了以下4种关键策略:
1、基于POJO的轻量级和最小侵入性编程;
2、通过依赖注入(DI)和面向接口实现松耦合;
3、基于切面(AOP)和惯例进行声明式编程;
4、通过切面和模版减少样式代码;
二、SpringBoot简介
2.1什么是SpringBoot
Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适)。
2.2、SpringBoot四个主要特性
1、SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中;
2、自动配置:SpringBoot的自动配置特性利用了Spring4对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们;
3、命令行接口:(Command-line-interface, CLI):SpringBoot的CLI发挥了Groovy编程语言的优势,并结合自动配置进一步简化Spring应用的开发;
4、Actuatir:它为SpringBoot应用的所有特性构建一个小型的应用程序。但首先,我们快速了解每项特性,更好的体验他们如何简化Spring编程模型。
2.3 SpringBoot开发的具体好处
回顾我们之前的 SSM 项目,搭建过程还是比较繁琐的,需要:
1、配置web.xml,加载spring和spring mvc
2、配置数据库连接、配置spring事务
3、配置加载配置文件的读取,开启注解
三,微服务
2014年。由martin fowler提出来的
微服务:架构风格(服务微化)
一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;
每一个功能元素最终都是一个可独立替换和独立升级的软件.
四,springboot入门程序
1.创建maven工程(jar)
点击自动导入依赖:
2.导入springboot相关的依赖
在springboot官网导入依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
这样可以看到依赖环境已经导入:
## 3.编写主程序 启动springboot
4.编写一个service 编写一个controller
5.启动springboot
响应结果:
6简化部署
导入一个插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
执行jar
java -jar
同样可以完成:
# 7.Springboot的pom文件分析
首先他有一个父依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
他的父项目是:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
父项目里面实际上他定义了众多版本控制
所有添加依赖的时候可以不添加版本号(当然没有在dependenlies里面管理的依赖自然需要声明版本号)
spring-boot-starter-web
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
spring-boot-starter:spring-boot场景启动器:帮我们导入了web模板正常运行所依赖的组件;
spring boot将所有的功能场景都抽取出来,做成一个个的starters(启动器)只需要在这些项目中引入这些starter相关场景的所有依赖,要用什么功能就导入什么启动器。
8.使用向导sprng initializr快速创建项目
DEF都支持使用spring的项目创建向导快速创建一个springboot项目:
选择我们需要的模块;向导会联网创建spring boot项目;
默认生成的springboot项目;
其中@RestController
是@RespondBody和Controller的合体.所以写一个就相当于两个一起产生功能
主程序已经生成好了,我们只需要我们自己的逻辑
resources文件夹目录结构
static:保存所有的静态资源:js css images
templates:保存所有的模板页面:(SpringBoot默认jar包使用嵌入式tomcat 不包括jsp)
application.properties可以修改一些默认配置文件
四,配置文件
1.两种配置文件介绍
springboot使用一个全局配置文件,配置文件名是固定的
application.properties
application.yml
配置文件的作用:修改springboot自动配置的默认值;springboot在底层给我们自动配置好;
YAML(YAML Ain t MARKUP LUABGUAGE)
标记语言;
以前的配置文件;大多使用的xxx.xml文件
yml以数据为中心.
2.YAML语法:
1.基本语法
k(空格):v标识一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
server:
prot:8081
path:/hello
属性和值也是大小写敏感:
2.值的写法
字面量:普通的值(数字,字符串,布尔)
k:V:字面直接来写:
字符串默认不用加上单引号或者双引号;
“”:双引号:不会转义字符串里面的特殊字符:特殊字符会作为本身想表示的意思
name:“zhangsna\n lisi” 输出“:zhangsan 换行 lisi
‘’ :单引号:会转移特殊字符:特殊字符最终知识一个普通字符串数据
name:“zhangsna\n lisi” 输出“:zhangsan \n lisi
对象.Map(属性和值)(键值对):
k:V
对象还是K:V的方式
friends
lastName:zhangsan
age:20
行内写法:
friends:{lastName: zhangsan,age: 20}
friends:
lastName: zhangsan
age: 20
数组(List。Set)
:用-值表示数组中的一个元素
pets:
- cat
- dog
- pig
行内写法:
pets:[ cat,dog,pig]
注意空格
例子:
添加配置文件标注:
@ConfigurationProperties(prefix = “Person”)
告诉springboot将本类中所有的属性和配置文件中相关的配置进行绑定:
prefix=”person“:配置文件中那个下面的所有属性一一映射
只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能
这里会报:
打开 添加依赖即可:
此外还要添加一个容器:
@Component
测试:
springboot项目本省提供了一个test类 不用手动juilt单元测试类
只需要注入:
结果:
配置properties文件编码问题
在properties配置文件中写入:
这样就不会出现中文乱码
@ConfigurationProperties与@Value的区别
value语法
@Value(”${xxx}“)
支持效验 需要添加注解:@Validated
@PropertySource@ImportResource
@ProertySource:加载指定的配置文件
@ImportResource:导入spring配置文件,让配置文件生效
@ImportResource(locations={"classpath:beans.xml"})
测试编写:
SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式
1.配置类======spring配置文件
2.使用@Bean给容器中添加组件
名称必须要一致。
配置文件占位符
打印输出结果:
Profile
配置文件的加载顺序:
外部配置文件加载顺序:
。
springboot的日志框架:
略(待编写)