SpringBoot 及其 基本原理(一)
个人博客网:https://wushaopei.github.io/ (你想要这里多有)
前言: 分布式架构及微服务理念
1.SOA理念(思想)
SOA :即 Service Oriented Architecture,面向服务架构
主张:
把项目中的各个模块从单一架构中拆分出来,封装成一个一个可以远程调用的服务,从而实现分布式架构。
开发具体的每一个服务时,使用一个interface定义这个服务的功能,这就是我们常说的暴露接口。
当我们实现了interface,将接口暴露到了网络上,可以进行远程调用了,就可以说这个服务开发完成了,这就是我们常说的“写接口”。
SOA精髓:通过提供服务和对服务的调用实现分布式架构。
项目 -----> 模块 -------> 代码
2. micro service 微服务理念
微服务主张服务的“微小化”,将各个模块服务中重复的功能抽取出来封装为微服务,用微服务组装称为各个功能模块。功能模块再组成项目。
项目 -----> 模块 -----> 微服务 -----> 代码
3.关于 SpringCloud 和 SpringBoot 的关系
这是对微服务理念的一整套具体实现。
SpringBoot在微观上开发具体的一个一个微服务。
SpringCloud在宏观上统一管理、协调各个微服务。为微服务提供各个服务的注册中心、网关、配置中心、负载均衡、熔断机制、服务降级、服务监控、服务细节屏蔽等等。
4.SpringCloud 和 Dubbo 对比
- 最重要的区别:
Dubbo:底层RPC 调用
SpringCloud : 底层REST调用(HTTP)
SpringCloud 能够为项目架构直接提供一整套解决方案。
Dubbo只能作为项目架构的核心和基石,完整的项目架构解决方案还需要借助其他技术。
5.SpringBoot工程的使用
- 加入需要的场景 starter依赖
- 配置properties或yml
- 创建主启动类
- 通过注解开启相关功能
- 运行主启动类
6.HelloWorld
6.1 操作步骤
①创建Maven工程
② 加入依赖
<!-- 继承SpringBoot官方指定的父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
</parent>
<dependencies>
<!-- 加入Web开发所需要的场景启动器 -->
<dependency>
<!-- 指定groupId和artifactId即可,版本已在父工程中定义 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
③创建主启动类
④创建HelloHandler
@Controller
public class HelloHandler {
@ResponseBody
@RequestMapping("/hello")
public String hello() {
return "Hello SpringBoot!";
}
}
⑤ 启动
运行主启动类中的main方法启动SpringBoot程序。
⑥通过网页访问handler方法
扩展: 关于包扫描的问题
SpringBoot中主启动类会自动扫描该类所在包的子包,相当于xml配置文件中的<mvc:context scan=”包扫描路径”/>
隐式默认声明自动导包
注意: 要进行扫描的包必须处于主启动类的子包中。
手动扫描包
使用注解进行包
访问结果:
6.2 通过 Spring 插件创建 SpringBoot工程
限制: 每次创建工程都必须联网:必须借助Spring 插件
效果 :自动生成主启动器和application.properties,以及测试类
SpringBoot 及其 基本原理(一)的更多相关文章
- SpringBoot 及其 基本原理、配置文件(二)
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.SpringBoot 的版本与启动过程 1.SpringBoot都是jar工程 2.Spring ...
- springboot学习(一)——helloworld
以下内容,如有问题,烦请指出,谢谢 springboot出来也很久了,以前零散地学习了不少,不过很长时间了都没有在实际中使用过了,忘了不少,因此要最近准备抽时间系统的学习积累下springboot,给 ...
- SpringBoot进阶教程(三十)整合Redis之Sentinel哨兵模式
Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而 ...
- SpringBoot + Spring Security 学习笔记(四)记住我功能实现
记住我功能的基本原理 当用户登录发起认证请求时,会通过UsernamePasswordAuthenticationFilter进行用户认证,认证成功之后,SpringSecurity 调用前期配置好的 ...
- 带着萌新看springboot源码09(springboot+JdbcTemplate)
emmm.....常规开局,继续说一下废话,前面简单的说了一下spring的ioc容器创建原理(花了不少时间去看了别人的博客+查了不少资料+自己的理解),相信大家对ioc容器有了一个初步的认识了. s ...
- 基于SpringBoot搭建应用开发框架(二) —— 登录认证
零.前言 本文基于<基于SpringBoot搭建应用开发框架(一)——基础架构>,通过该文,熟悉了SpringBoot的用法,完成了应用框架底层的搭建. 在开始本文之前,底层这块已经有了很 ...
- SpringBoot日记——分布式篇
思考:什么是分布式?什么是微服务? 一些概念:RPC-远程过程调用,某台机器想要调用另一台机器所需要的一种服务,及分布式的服务框架,比如dubbo或者SpringCloud. 铺天盖地的分布式互联网系 ...
- Spring全家桶系列–SpringBoot与Mybatis结合
//本文作者:cuifuan Mybatis 是一个持久层ORM框架,负责Java与数据库数据交互,也可以简易理解为中介,相对于它,还有个中介是hibernate,不过在mybatis中sql语句的灵 ...
- RabbitMQ学习笔记(一):安装及Springboot集成
前言 MQ,即消息队列Message Queue的缩写. RabbitMQ 是MQ的一种,就像招商银行是银行的一种一样.主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息 ...
随机推荐
- OpenWrt R2020.03.05 去广告 抗污染 加速 UnPnP NAS
固件版本已经更新,新版本链接:https://www.cnblogs.com/zlAurora/p/12500932.html 容我啰嗦一下,为什么会有这个固件. 从KoolShare LED ...
- Day_08【面向对象】扩展案例3_使用多态的形式创建缉毒狗对象,调用缉毒方法和吼叫方法
分析以下需求,并用代码实现: 1.定义动物类: 行为: 吼叫:没有具体的吼叫行为 吃饭:没有具体的吃饭行为 2.定义缉毒接口 行为: 缉毒 3.定义缉毒狗:犬的一种 行为: 吼叫:汪汪叫 吃饭:狗啃骨 ...
- .Net Core微服务化ABP之六——处理Authentication
上篇中我们已经可以实现sso,并且为各个服务集成sso认证.本篇处理权限系统的角色问题,权限系统分两层,第一层为整体系统角色权限,区分app用户.后台用户.网站用户的接口权限,第二层为业务系统权限,对 ...
- hadoop文件系统常用操作
详细可参考hadoop官方文档filesystem shell一节 使用hadoop离不开文件系统,比如hdfs,我们可能需要从hdfs中读取文件作为输入,并将输出保存到hdfs上某个文件中 首先创建 ...
- LeetCode二分专题
二分 二分模板 两个模板:1.最大值最小模板一,2.最小值最大用模板二 单调性.两段性的性质 版本1:二分绿色端点是答案,最大值最小 int bsearch_1(int l, int r){ whil ...
- 基于Kubernetes服务发现机制的探讨Non Service
服务注册 注册中⼼作为一般的RPC/Web服务中的底层设施提供了服务进程元数据(IP, Port, Interface, Group,Method等)存储,被Watch的功能,每个服务进程均需接⼊同⼀ ...
- 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...
- Python基础语法day_02——字符串规则
day_02 使用方法修改字符串的大小写 将字符串首字母变成大写 >>> name = "ada lovelace" >>> print(nam ...
- 00003-aspose for java 生成水印刻章等,可转为word,pic,pdf
对应java代码: package com.yoooya.ytp.utils.doc; import com.aspose.words.Document; import com.aspose.word ...
- 重学 Java 设计模式:实战工厂方法模式
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!