个人博客网: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 及其 基本原理(一)的更多相关文章

  1. SpringBoot 及其 基本原理、配置文件(二)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.SpringBoot 的版本与启动过程 1.SpringBoot都是jar工程 ​ 2.Spring ...

  2. springboot学习(一)——helloworld

    以下内容,如有问题,烦请指出,谢谢 springboot出来也很久了,以前零散地学习了不少,不过很长时间了都没有在实际中使用过了,忘了不少,因此要最近准备抽时间系统的学习积累下springboot,给 ...

  3. SpringBoot进阶教程(三十)整合Redis之Sentinel哨兵模式

    Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而 ...

  4. SpringBoot + Spring Security 学习笔记(四)记住我功能实现

    记住我功能的基本原理 当用户登录发起认证请求时,会通过UsernamePasswordAuthenticationFilter进行用户认证,认证成功之后,SpringSecurity 调用前期配置好的 ...

  5. 带着萌新看springboot源码09(springboot+JdbcTemplate)

    emmm.....常规开局,继续说一下废话,前面简单的说了一下spring的ioc容器创建原理(花了不少时间去看了别人的博客+查了不少资料+自己的理解),相信大家对ioc容器有了一个初步的认识了. s ...

  6. 基于SpringBoot搭建应用开发框架(二) —— 登录认证

    零.前言 本文基于<基于SpringBoot搭建应用开发框架(一)——基础架构>,通过该文,熟悉了SpringBoot的用法,完成了应用框架底层的搭建. 在开始本文之前,底层这块已经有了很 ...

  7. SpringBoot日记——分布式篇

    思考:什么是分布式?什么是微服务? 一些概念:RPC-远程过程调用,某台机器想要调用另一台机器所需要的一种服务,及分布式的服务框架,比如dubbo或者SpringCloud. 铺天盖地的分布式互联网系 ...

  8. Spring全家桶系列–SpringBoot与Mybatis结合

    //本文作者:cuifuan Mybatis 是一个持久层ORM框架,负责Java与数据库数据交互,也可以简易理解为中介,相对于它,还有个中介是hibernate,不过在mybatis中sql语句的灵 ...

  9. RabbitMQ学习笔记(一):安装及Springboot集成

    前言 MQ,即消息队列Message Queue的缩写. RabbitMQ 是MQ的一种,就像招商银行是银行的一种一样.主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息 ...

随机推荐

  1. (三)Redis &分布式锁

    1 Redis使用中的常见问题和解决办法 1.1 缓存穿透 定义:缓存系统都是按照key去缓存查询,如果不存在对应的value,就应该去DB查找.一些恶意的请求会故意查询不存在的key,请求量很大,就 ...

  2. 报错:Maven创建An internal error occurred during: "Retrieving archetypes:". Java heap space

    在Eclipse中创建Maven的Web项目时出现错误:An internal error occurred during: "Retrieving archetypes:". J ...

  3. 一、Spring的控制反转(IOC)学习

    一.控制反转 1.什么是控制反转? 控制反转(Inversion of Control,缩写为IoC),是面向对象中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(D ...

  4. Linux内核驱动学习(十)Input子系统详解

    文章目录 前言 框架 如何实现`input device` 设备驱动? 头文件 注册input_dev设备 上报按键值 dev->open()和dev->close() 其他事件类型,处理 ...

  5. 【编程之美】常用于单片机的接口适配器模式C语言实现

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://www.cnblogs.com/lihuidashen/p/128750 ...

  6. 对文本的内容进行排序(io流、集合操作)

    package com.itheima.demo01.BufferedStream; import java.io.*; import java.util.HashMap; /* 练习: 对文本的内容 ...

  7. idea 2020 配置本地 Maven 仓库

    问题: 默认Maven 仓库地址在C盘,C盘是系统盘能少放东西尽量少放. 只需要简单的两步 1.File~Settings 然后搜索 maven 如下图绿框 修改成你自己的 Maven 仓库 2.Fi ...

  8. 这一份MySQL书单,可以帮你搞定90%以上的面试题!

  9. mysql查询日期分组,不存在的补全0,做每天数据图表,根据日期,N天数往前查

    SELECT IFNULL( DATA.count, 0 ) AS count, day_list.DAY AS createTime FROM ( SELECT DATE_FORMAT( creat ...

  10. linux wc 的用法-linux 下统计行数、单词数、字符个数

    linux wc 的用法-linux 下统计行数.单词数.字符个数   wc : wc -l 统计有多少行 wc -w 统计有多少个单词 wc -c 统计有多少个字符