java spring cloud
servlet是新造词,它等于server + let(表示小东西的词根)
所以它表示小型的服务,它是JAVA对WEB应用的早期支持方式,可以看成在服务器上运行的Java API的规范,主要有javax.servlet和javax.servlet.http。
springMVC处理流程
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时代。
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使用数据库
以前有个问题,说DB本身是有缓存机制的,为什么还要用redis缓存数据库呢?呵呵
spring里使用缓存,要使用spring cache组件,会使用@EnableCaching、@Cacheable等注解。
Authentication身份鉴定,是鉴定你确实是你;Authorization鉴权是你是你后,你可以有权力干什么
SpringCloud的架构
服务治理主要做,1是获取分布式环境中服务的地址、2是更新服务状态可用或不可用
Eureka有些遗留问题,2.0开源计划暂停。所以Nacos就来了,它是Ali内部产品ConfigServer的开源。
为了在发起方法调用时,不用拼接访问路径和参数,提高体验,可以再加一层,做一个封装,就是OpenFeign组件。它包含了对Ribbon的依赖引用。使用@EnableFeignClients等注解。
spring cloud gateway的位置,可以看做是nginx之后、服务集群之前。gateway是spring网关层组件首选,zuul1.0和2.0不是。
- 点赞
- 收藏
- 关注作者
评论(0)