本文共 6852 字,大约阅读时间需要 22 分钟。
2003年兴起的一个轻量级的java开源框架,这个框架最初是为了解决企业级应用开发笨重臃肿的问题。宗旨就是简化开发。特点:AOP和IOC。并且提供了很多Template模板。
随着Spring越来越火,Spring也慢慢从一个小而精的框架变成了一个覆盖面广又全的框架,但是也导致了大量繁琐的XML配置和第三方整合配置,这时候Spring boot应运而生。从13年开始研发,到14年4月1.0版本正式发布。
Spring Boot相对于Spring来说是一套全新的框架,并且Sring所具备的功能它都有并且更容易使用;同时还简化了基于Spring的应用开发,通过少量的代码就能创建一个独立的、产品级别的Spring应用。
Spring Boot默认配置了很多框架的使用方式,整合了所有的框架。核心设计思想是:约定优于配置,所有的开发细节都是依据此思想进行实现的。
微服务就是一种架构思想,可以把单一的一个项目,拆分成很多微小的服务并且他们都运行在自己的进程中,相互之间通过http进行通信。
所谓单体应用架构(all in one)是指我们将一个应用中的所有服务都封装在一个应用中。无论是ERP、CRM或是其他什么系统,都把数据库访问,web访问,等等功能放到一个war包内。
优点:易于开发和测试;方便部署;当需要扩展时,只需要将war复制多份,然后放到多个服务器上,再做负载均衡即可。
缺点:项目过于臃肿;资源无法隔离;无法灵活扩展。
所谓微服务架构,就是把每个功能元素独立出来。把独立出来的功能元素动态组合,需要的功能元素才拿来组合,需要多一些时可以整合多个功能元素。所以微服务架构是对功能元素进行复制,而没有对整个应用进行复制。
优点:节省了调用资源,每个功能元素的服务都是一个可替换的、可独立升级的软件代码。
一个大型系统的微服务架构,就像一个复杂的神经网络,每一个神经元就是一个功能元素,它们各自完成自己的功能,然后通过http或者RPC相互请求调用。但这种庞大的系统架构给部署和运维带来很大的难度,于是,spring为我们带来了构建大型分布式微服务的产品:
pom.xml文件
4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.2.RELEASE com.springboot-study-two springboot-study-two 0.0.1-SNAPSHOT springboot-study-two Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine org.springframework.boot spring-boot-maven-plugin
package com.study.springboot;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/** * @SpringBootConfiguration:springboot的配置类 * @Configuration:表明这是一个配置类 * @Component:加载到spring容器 * @EnableAutoConfiguration:开启自动配置功能 * @AutoConfigurationPackage:自动配置包 * @Import({Registrar.class}):把启动类所在的包进行默认扫描,该包下的所有类都会被扫到spring容器中进行管理 * @Import({AutoConfigurationImportSelector.class}):加载指定的类到spring容器中去 * AutoConfigurationImportSelector:自动配置导入选择器 * 根据项目来判断你的项目需要哪些配置信息然后把默认的配置内容导入spring容器中进行管理 * @ComponentScan:组件扫描和自动装配,用来指定扫描容器的范围。 * **/@SpringBootApplication//Springboot启动类注解public class SpringbootStudyOneApplication { public static void main(String[] args) { SpringApplication.run(SpringbootStudyOneApplication.class, args); }}
如下图所示:
springboot为什么还需要用配置文件
springboot中的配置文件有哪些
springboot中的配置文件使用中注意事项
yml的全称为YAML(YAML Ain’t Markup Language)它是一种标记语言,它是一种直观地呗电脑识别的数据序列化格式,并且容易被人类阅读,这种标记语言和其他标记语言不同的地方是,它是以数据为中心,比json、xml等更适合做配置文件。
Value注入
例如:
@Value("${person.name}")private String name;
等同于:
@PropertySource("classpath:properties文件名")
;什么是URI
统一资源标识符,服务器上每一种资源,比如文档、图像、视频片段、程序都由一个通用资源标识符(Uniform Resource Identifier,简称“URI”)进行定位。URL是URI的一种,不仅标识了Web 资源,还指定了操作或者获取方式,同时指出了主要访问机制和网络位置。
URN是URI的一种,用特定命名空间的名字标识资源。使用URN可以在不知道其网络位置及访问方式的情况下讨论资源。
近年来移动互联网的发展,前端设备层出不穷(手机、平板、桌面电脑、其他专用是设备…),因此REST作为一种统一的机制,为了方便不同的前端设备与后端进行通信而诞生了。它可以通过一套统一的接口为Web,iOS和Android提供服务。
Rest(Representational State Transfer,表述性状态转移),是一种架构风格。
遵循了REST原则的web服务,rest式的web服务是一种ROA(The Resource-Oriented Architecture——面向资源的架构),RESTful架构一个核心概念是**“资源”**。
方法 | URL | 功能 |
---|---|---|
GET | /users | 获取用户列表 |
GET | /users/1 | 获取id为1的用户 |
POST | /users | 创建一个用户 |
PUT | /users/1 | 替换id为1的用户 |
PATCH | /users/1 | 修改id为1的用户 |
DELETE | /users/1 | 删除id为1的用户 |
DELETE | /users/1/products/2 | 删除id为1的用户下id为2的产品 |
Spring Boot全面支持开发RESTful程序,通过不同的注解来支持前端的请求:
@GetMapping
,处理Get请求;@PostMapping
,处理Post请求;@PutMapping
,用于更新资源;@DeleteMapping
,处理删除请求;@PatchMapping
,用于更新部分资源Controller中的映射注解
PathVariable
,用于接收url路径上的参数;ModelAttribute
,用于直接接受**url?**后面的参数,如url?id=123&name=456,然后直接转为PojoSpring Data REST作为Spring Data项目的子集,开发者只需要使用注解@RepositoryRestResource
标记,就可以把整个Repository转换为HAL(Hypertxt Application Language,是一个被广泛采用的超文本表达的规范)风格的REST资源,目前已支持Spring Data JPA、Spring Data MongoDB、Spring Data Neo4j等等。
简单地说,Spring Data REST把我们需要编写的大量REST模板接口做了自动化实现,并符合HAL的规范。只要使用了他,我们就能大大减少代码量。
官方文档:https://www.springcloud.cc/spring-data-rest-zhcn.html
REST里的常用操作
PUT和PATCH两种修改的区别(PUT只能全局进行修改,PATCH可以局部进行修改)
ring-Data-REST的开发流程REST里的常用操作
PUT和PATCH两种修改的区别(PUT只能全局进行修改,PATCH可以局部进行修改)
手写Controller与REST共存
转载地址:http://cmugn.baihongyu.com/