java spring cloud

举报
黄生 发表于 2022/10/05 15:55:56 2022/10/05
【摘要】 servlet是新造词,它等于server + let(表示小东西的词根)所以它表示小型的服务,它是JAVA对WEB应用的早期支持方式,可以看成在服务器上运行的Java API的规范,主要有javax.servlet和javax.servlet.http。springMVC处理流程SpringMVC仍然需要web.xml和Bean配置,为了进一步简化,秉承Convention Over Co...

servlet是新造词,它等于server + let(表示小东西的词根)
所以它表示小型的服务,它是JAVA对WEB应用的早期支持方式,可以看成在服务器上运行的Java API的规范,主要有javax.servlet和javax.servlet.http。

springMVC处理流程
image.png

SpringMVC仍然需要web.xml和Bean配置,为了进一步简化,秉承Convention Over Configuration,Spring Boot出来了

EJB1.0发布于1999,IBM提出,SUN吸收。Rod Johnson写了Expert One-on-One J2EE Design and Development 和 J2EE without EJB。认为EJB实际上忘了初心(让程序员把精力用在业务功能上),让程序员花费大量时间和精力实现规范类、管理生命周期。所以提出了轻量级框架,让程序员走出Winter,进入Spring。

它的核心概念有
IoC Inversion of Control. 它与依赖注入(DI Dependency Injection)密不可分。实际上是将依赖类和被依赖类从强耦合变成了松耦合。
AOP 切面(Aspect)是一组模块化的,可被多个类复用的逻辑(一般是非业务逻辑)。当目标对象(Target Object)的一段程序在某个执行点(Join-Point)的切入点(Pointcut)判断为真时,切面逻辑会被触发执行,并将Aspect和Target Object连接在一起,形成一个真正可执行的切面逻辑。这个过程就是织入(Weaving)。

Spring Framework像一个胶水,具有融合的能力。下图形成于Spring3时代。
image.png

2012年有一个人在spring github上提出希望提供一个无需直接与servlet容器交互的框架,简化开发者的工作。1年后官方回复会创建spring boot。

starter解决集成时的版本依赖和兼容问题。比如,要用redis,需要声明2个依赖,spring data redis 和 redis客户端,你要了解这2个之间的依赖,而且如果有一个升级了呢?而用starter只需引入spring-boot-starter-data-redis即可(mvn dependency:tree查看依赖)。
建议继承spring boot parent,因为它的pom.xml指定了经过兼容测试的starter。不能继承时,可以引入(scope为import的pom依赖项)。
如果是一个提供工具类的公共模块,那可以不使用任何starter。

Condition是在Spring4中引入的,可以有选择的注册Bean,和@Conditional配合使用,就可以控制Bean在什么条件下会被加载并初始化。(可以将logging.level.root=DEBUG加入application.properties来查看)SpringBoot利用Condition对常见开源框架定义了相应的AutoConfiguration类,定义在spring.factories里。有点像平台经济了哦…

默认只加载application.properties(或yml),用@PropertySouce可以加载其他配置文件,再用@ConfigurationProperties加载配置项到类的字段。另外根据不同的环境有不同的配置文件,可以用profile来区分。

将starter-actuator加入依赖,可以满足运维定位运行问题、服务探活等需求。

lombok可以在编译期处理代码注释,用它提供的注释,开发者就可以省去很多无聊的代码。并且它通过注释提供了一些经典设计模式的最佳实践。需要IDE插件支持。

springboot项目都有一个maven-plugin插件,用于构建,在原jar上再次构建,成为可执行的jar,里面还有jar。

logback最初是要替代log4j,性能比较好(不是比Log4j2)。
starter-data-jpa使用数据库
image.png

以前有个问题,说DB本身是有缓存机制的,为什么还要用redis缓存数据库呢?呵呵
spring里使用缓存,要使用spring cache组件,会使用@EnableCaching、@Cacheable等注解。

Authentication身份鉴定,是鉴定你确实是你;Authorization鉴权是你是你后,你可以有权力干什么

SpringCloud的架构
image.png

服务治理主要做,1是获取分布式环境中服务的地址、2是更新服务状态可用或不可用
Eureka有些遗留问题,2.0开源计划暂停。所以Nacos就来了,它是Ali内部产品ConfigServer的开源。

为了在发起方法调用时,不用拼接访问路径和参数,提高体验,可以再加一层,做一个封装,就是OpenFeign组件。它包含了对Ribbon的依赖引用。使用@EnableFeignClients等注解。

spring cloud gateway的位置,可以看做是nginx之后、服务集群之前。gateway是spring网关层组件首选,zuul1.0和2.0不是。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。