SpringCloud学习(一)版本2.1.4

微服务实践(一)事件监听器以及事件发布

  • 什么是Spring Cloud
    • Bootstrap 上下文
  • 开始构建第一个项目

什么是Spring Cloud

Spring Cloud为开发人员提供快速构建分布式系统的一些通用模式,其中包括:配置管理、微服务发现、服务短路、智能路由(其实还是看策略)、微型网关、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态。分布式系统间的协调导向样板模式,并使用Spring Cloud 的开发人员能够快速地构建实现这些模式的服务和应用。这些服务和应用也将在任何环境下工作良好,无论是开发者的笔记本、还是数据中心裸机或者管控平台

Bootstrap 上下文

  • 理解Bootstrap 上下文
    Bootstrap 上下文是SpringCloud引入的概念,与传统Spring上下文相同,系ConfigurableApplicationContext实例m,由BootstrapApplicationListener在监听ApplicationEnvironmentPreparedEvent时创建。

  • Spring事件/监听器模式
    ApplicationEvent/ApplicationListener

开始构建第一个项目

废话不多说理论呢先了解一下就好,如果有兴趣的话可以去官方查看官方文档。
通过官方地址构建点击官方地址有链接~

  • 进入之后的样子
    SpringCloud学习(一)版本2.1.4_第1张图片
    我们通过官方构建选择使用Maven还是Gradle进行构建以及选择使用Java语言还是其他语言。这里的话我们选择了2.1.4版本进行构建,并不是其他版本不好在这里我们解释一下版本后面的标识含义,所以我在这选择了2.1.4各位可依据自己需要选择版本。不一定要跟随我选择版本。Project Metadata这个我就不做过多解释,因为大家都经常用到。Dependencies这个部分呢是选配一些包的地方就像你买一辆车有的车呢你可以选配某些配件。例如你需要构建的项目是一个web项目那我们这里打上web即可。这里呢我就只选配web和Cloud Bootstrap了如下图
    SpringCloud学习(一)版本2.1.4_第2张图片
  • M2:这个版本呢表示里程碑的版本
  • SNAPSHOT:这个版本为快照版,可以稳定使用但是仍旧会对其做后续更新
  • Release/GA:标识正式发布版本
    好了第一步我们完成后点击页面唯一一个大按钮将项目拉下来。
    我们将项目拉取完成后解压,导入开发工具内这里我使用的开发工具Intellij IDEA各位依据实际情况进行选择
    SpringCloud学习(一)版本2.1.4_第3张图片
    点击进行导入,然后我们一路next下去,等待项目完成一些jar的下载。
    这里呢我的配置完成了项目结构如下图
    SpringCloud学习(一)版本2.1.4_第4张图片
    很简单的结构只有一个类文件,通过运行这个Applicat.java文件就可以完成项目的运行。
    Spring Cloud呢会给我们引入一些默认的依赖我们可以看一下如下图。
    SpringCloud学习(一)版本2.1.4_第5张图片
    这三个jar呢就是我们Spring cloud 暂时要用到的三个jar 可能context和starter这两个对于大家来说猜也可以猜到他的功能,commons这个jar呢就是包含Cloud的一些公共的东西。
    在开发之前呢我们要注意一件事情,我们在写项目代码时候呢一定要在Application.java文件下进行包的建立以及代码书写,防止扫描不到写的代码。如下图为正确建立方法
    SpringCloud学习(一)版本2.1.4_第6张图片
    这里呢我们从Spring的事件进行一个项目的编写,首先呢我们进行一个事件监听器的创建。这里上图我已经建立好了一个监听器的类。在java中呢有一个标准的事件接口(EventObject)我们可以稍微注意一下。我们Spring中也有这种方式根接口呢就是我们Spring中的ApplicationEvent对象(它是一个抽象对象。内部包含SpringBoot的也有Spring的)它也继承自EventObject。
    这里呢我们写一个静态的MyApplication继承ApplicationEvent将包导入后呢需要实现一下它的方法。
    SpringCloud学习(一)版本2.1.4_第7张图片
    接下来我们因为做演示需要使用到注解配置对象那注解配置对象那里来?当然是new一个了,这里我们使用Spring的AnnotationConfigApplicationContext进行实例化。并实现一个事件监听器,我们实现一下Spring的ApplicationListener。下图有注释~
    SpringCloud学习(一)版本2.1.4_第8张图片
    上图呢我们并没有完善完,监听器有了事件有了现在运行是否就可以打印输出事件来源呢?答案是否定的!我们将注解配置对象实例出来并使用他的refresh方法进行一个启动但是监听器是否添加进去了?事实并没有将监听器添加进去我们需要使用context的addApplicationListener进行一个监听器的添加传入什么呢?传入的当然是我们的监听器。怎么传入?
    SpringCloud学习(一)版本2.1.4_第9张图片
    现在就会有人问了,这次总好了把,那咱们理一下思路在开始的时候呢我们写事件监听器现在监听器有了也将监听器添加了,事件也放在监听器里了,那有一个疑问就是你的事件从哪里来呢?所以这里我们还需要一步发布事件
    SpringCloud学习(一)版本2.1.4_第10张图片
    这次可以了我们来运行一下看看结果如何。
    SpringCloud学习(一)版本2.1.4_第11张图片
    我们可以看到控制台打印输出了一句事件来源Hello world。
    好了此次课程暂时就到这里,如果有疑问欢迎联系我~

你可能感兴趣的:(SpringCloud)