![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
三郎君
写文章勤分享:巩固自己,帮助他人,何乐而不为!
展开
-
线程隔离,服务降级
线程隔离,服务降级1.3.1.原理Hystrix为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间。用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理,什么是服务降级?服务降级:优先保证核心服务,而非核心服务不可用或弱可用。用户的请求故障时,不会被阻塞,更不会无休止的等待或者看到系统崩溃,至少可以看到一个执行结果(例如返回友好的提示信息) 。服务降级虽然会导致请求失败,但原创 2021-03-21 22:27:45 · 206 阅读 · 0 评论 -
雪崩问题
雪崩问题微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路:一次业务请求,需要调用A、P、H、I四个服务,这四个服务又可能调用其它服务。如果此时,某个服务出现异常:例如微服务I发生异常,请求阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞:服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。这就好比,一个汽车生产线,生产不原创 2021-03-21 22:25:55 · 162 阅读 · 0 评论 -
Hystrix简介
Hystrix1.1.简介Hystrix,英文意思是豪猪,全身是刺,看起来就不好惹,是一种保护机制。Hystrix也是Netflix公司的一款组件。主页:https://github.com/Netflix/Hystrix/那么Hystix的作用是什么呢?具体要保护什么呢?Hystix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败。...原创 2021-03-21 22:24:05 · 231 阅读 · 0 评论 -
SpringBoot与整合其他技术
SpringBoot与整合其他技术5.1 SpringBoot整合Mybatis5.1.1 添加Mybatis的起步依赖<!--mybatis起步依赖--><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.原创 2021-03-21 22:13:27 · 201 阅读 · 0 评论 -
SpringBoot的配置文件
SpringBoot的配置文件4.1 SpringBoot配置文件类型4.1.1 SpringBoot配置文件类型和作用SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。SpringBoot默认会从Resources目录下加载application.properties或application.yml(appli原创 2021-03-21 22:11:59 · 91 阅读 · 0 评论 -
springboot自动配置原理解析
springboot自动配置原理解析按住Ctrl点击查看启动类MySpringBootApplication上的注解@SpringBootApplication@SpringBootApplicationpublic class MySpringBootApplication { public static void main(String[] args) { SpringApplication.run(MySpringBootApplication.class); }原创 2021-03-21 22:08:34 · 128 阅读 · 0 评论 -
SpringBoot工程热部署
SpringBoot工程热部署我们在开发中反复修改类、页面等资源,每次修改后都是需要重新启动才生效,这样每次启动都很麻烦,浪费了大量的时间,我们可以在修改代码后不重启就能生效,在 pom.xml 中添加如下配置就可以实现这样的功能,我们称之为热部署。<!--热部署配置--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>sprin原创 2021-03-21 22:05:22 · 106 阅读 · 0 评论 -
三郎Java框架学习:SpringBoot的起步依赖及其作用
SpringBoot的起步依赖及其作用SpringBoot要求,项目要继承SpringBoot的起步依赖spring-boot-starter-parent<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE&原创 2021-03-21 22:02:29 · 604 阅读 · 0 评论 -
三Java框架学习:SpringBoot简介
一、SpringBoot简介1.1 原有Spring优缺点分析1.1.1 Spring的优点分析Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入(IOC)和面向切面编程(AOP),用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。1.1.2 Sp原创 2021-03-21 21:58:34 · 230 阅读 · 0 评论 -
负载平衡的意义什么?
负载平衡的意义什么?在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程...原创 2020-12-16 14:19:06 · 633 阅读 · 0 评论 -
SpringBoot和SpringCloud的区别?
SpringBoot和SpringCloud的区别?SpringBoot专注于快速方便的开发单个个体微服务。SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot ,属于依赖的关系.Spring原创 2020-12-14 11:19:40 · 345 阅读 · 0 评论 -
Eureka和zookeeper都可以提供服务注册与发现的功能,两个的区别是什么?
Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?Zookeeper保证了CP(C:一致性,P:分区容错性),Eureka保证了AP(A:高可用)1.当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的信息,但不能容忍直接down掉不可用。也就是说,服务注册功能对高可用性要求比较高,但zk会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新选leader。问题在于,选取leader时间过长,30 ~ 120s,且选取期间z原创 2020-12-14 11:17:09 · 286 阅读 · 0 评论 -
SpringCloud有什么优势?
SpringCloud有什么优势?使用 Spring Boot 开发分布式微服务时,我们面临以下问题:(1)与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。(2)服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。(3)冗余-分布式系统中的冗余问题。(4)负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。(原创 2020-12-14 11:13:24 · 730 阅读 · 0 评论 -
什么是微服务?
什么是微服务?微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分为一组小的服务,每个服务运行在其独立的自己的进程中,服务之间相互协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API),每个服务都围绕着具体的业务进行构建,并且能够被独立的构建在生产环境、类生产环境等。另外,应避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中原创 2020-12-14 11:09:26 · 90 阅读 · 0 评论 -
什么是SpringCloud?
什么是SpringCloud?Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。...原创 2020-12-14 11:06:08 · 91 阅读 · 0 评论 -
解释更多 Staters 的内容?
能否举一个例子来解释更多 Staters 的内容?让我们来思考一个 Stater 的例子 -Spring Boot Stater Web。如果你想开发一个 web 应用程序或者是公开 REST 服务的应用程序。Spring Boot Start Web 是首选。让我们使用 Spring Initializr 创建一个 Spring Boot Start Web 的快速项目。Spring Boot Start Web 的依赖项下面的截图是添加进我们应用程序的不同的依赖项依赖项可以被分为:S原创 2020-12-10 14:02:27 · 421 阅读 · 0 评论 -
Spring Boot、Spring MVC 和 Spring 有什么区别?
Spring Boot、Spring MVC 和 Spring 有什么区别?1、SpringSpring最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。2、Spring MVCSpring MVC 提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServelet,MoudlAndView和 ViewResol原创 2020-12-10 13:58:33 · 2526 阅读 · 0 评论 -
如何重新加载Spring Boot上的更改,而无需重新启动服务器?
如何重新加载Spring Boot上的更改,而无需重新启动服务器?这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新加载Spring Boot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot在发布它的第一个版本时没有这个功能原创 2020-12-10 13:54:24 · 520 阅读 · 0 评论 -
Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
Spring Boot 的核心配置文件有哪几个?它们的区别是什么?Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。bootstrap 配置文件有以下几个应用场景。使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;一些固定的不能被覆盖的属性原创 2020-12-10 13:50:46 · 2052 阅读 · 1 评论 -
Spring Boot 配置加载顺序
Spring Boot 配置加载顺序?在 Spring Boot 里面,可以使用以下几种方式来加载配置。1)properties文件;2)YAML文件;3)系统环境变量;4)命令行参数;等等……原创 2020-12-10 13:49:04 · 131 阅读 · 0 评论 -
SpringBoot 实现热部署有哪几种方式?
SpringBoot 实现热部署有哪几种方式?主要有两种方式:1 Spring Loaded2 Spring-boot-devtools原创 2020-12-10 09:37:07 · 595 阅读 · 1 评论 -
你如何理解 Spring Boot 中的 Starters?springboot常用的starter有哪些?
你如何理解 Spring Boot 中的 Starters?Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成 Spring及其他技术,而不需要到处找示例代码和依赖包。如你想使用 Spring JPA 访问数据库,只要加入spring-boot-starter-data-jpa 启动器依赖就能使用了。springboot常用的starter有哪些?spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支原创 2020-12-09 16:21:05 · 1416 阅读 · 0 评论 -
如何使用Spring Boot实现异常处理?
如何使用Spring Boot实现异常处理?Spring提供了一种使用ControllerAdvice处理异常的非常有用的方法。我们通过实现一个ControlerAdvice类,来处理控制器类抛出的所有异常。原创 2020-12-09 16:19:21 · 258 阅读 · 0 评论 -
Spring Boot中的监视器是什么?
Spring Boot中的监视器是什么?Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。...原创 2020-12-09 16:18:32 · 1647 阅读 · 0 评论 -
Spring Boot 需要独立的容器运行吗?
Spring Boot 需要独立的容器运行吗?可以不需要,内置了 Tomcat/ Jetty 等容器。原创 2020-12-09 16:17:21 · 1472 阅读 · 0 评论 -
如何在Spring Boot启动的时候运行一些特定的代码?
如何在Spring Boot启动的时候运行一些特定的代码?如果你想在Spring Boot启动的时候运行一些特定的代码,你可以实现接口ApplicationRunner或者CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个run方法。CommandLineRunner:启动获取命令行参数...原创 2020-12-09 16:16:10 · 664 阅读 · 0 评论 -
如何理解 Spring Boot 中的 Starters?
如何理解 Spring Boot 中的 Starters?Starters是什么:Starters命名:Starters分类:Starters是什么:Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包。如你想使用Spring JPA访问数据库,只要加入springboot-starter-data-jpa启动器依赖就能使用了。Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一原创 2020-12-09 16:14:13 · 3268 阅读 · 0 评论 -
运行Spring Boot有哪几种方式?
运行Spring Boot有哪几种方式?1 打包用命令或者放到容器中运行2 用 Maven/Gradle 插件运行3 直接执行 main 方法运行原创 2020-12-09 16:10:23 · 2191 阅读 · 0 评论 -
Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下3个注解:@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:@SpringBootApplication(excl原创 2020-12-09 16:09:23 · 2141 阅读 · 0 评论 -
什么是SpringBoot?为什么要用SpringBoot?
什么是SpringBoot?为什么要用SpringBoot?用来简化spring应用的初始搭建以及开发过程使用特定的方式来进行配置(properties或yml文件)创建独立的spring引用程序 main方法运行嵌入的Tomcat 无需部署war文件简化maven配置自动配置spring添加对应功能starter自动化配置spring boot来简化spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用Spring Boot 优点非常多,如:一、原创 2020-12-09 16:07:11 · 489 阅读 · 0 评论 -
MyBatis的优点和缺点
MyBatis的优点和缺点优点:(1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。(2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接;(3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。(4)能够与Spring很好的集成;(5)提供映原创 2020-12-07 16:01:17 · 2447 阅读 · 1 评论 -
什么是MyBatis?
什么是MyBatis?(1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。(2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。(3)通过xml 文件或注解的方式将要执行的各种 statem原创 2020-12-07 15:54:04 · 1412 阅读 · 0 评论 -
Spring框架中都用到了哪些设计模式?
Spring框架中都用到了哪些设计模式?(1)工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例;(2)单例模式:Bean默认为单例模式。(3)代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术;(4)模板方法:用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。(5)观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得原创 2020-12-07 15:52:06 · 911 阅读 · 0 评论 -
解释Spring支持的几种bean的作用域。
解释Spring支持的几种bean的作用域。Spring容器中的bean可以分为5个范围:(1)singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。(2)prototype:为每一个bean请求提供一个实例。(3)request:为每一个网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。(4)session:与request范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。原创 2020-12-07 15:49:28 · 1093 阅读 · 0 评论 -
spring bean的生命周期
spring bean的生命周期(1)实例化Bean:(2)设置对象属性(依赖注入):(3)处理Aware接口:(4)BeanPostProcessor:(5)InitializingBean 与 init-method:(6)如果这个Bean实现了BeanPostProcessor接口,(7)DisposableBean:(8)destroy-method:首先说一下Servlet的生命周期:实例化,初始init,接收请求service,销毁destroy;Spring上下文中的Bean生命周期也类原创 2020-11-27 11:46:21 · 88 阅读 · 0 评论 -
SpringMVC常用的注解有哪些?
SpringMVC常用的注解有哪些?@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。...原创 2020-11-27 11:41:46 · 518 阅读 · 0 评论 -
SpringMVC怎么样设定重定向和转发的?
SpringMVC怎么样设定重定向和转发的?(1)转发: 在返回值前面加"forward:""forward:user.do?name=method4"(2)重定向: 在返回值前面加"redirect:""redirect:http://www.baidu.com"原创 2020-11-27 11:40:17 · 656 阅读 · 0 评论 -
Spring依赖注入的方式有几种,各是什么?
一、构造器注入将被依赖对象通过构造函数的参数注入给依赖对象,并且在初始化对象的时候注入。优点:对象初始化完成后便可获得可使用的对象。缺点:当需要注入的对象很多时,构造器参数列表将会很长;不够灵活。若有多种注入方式,每种方式只需注入指定几个依赖,那么就需要提供多个重载的构造函数,麻烦。二、setter方法注入IoC Service Provider通过调用成员变量提供的setter函数将被依赖对象注入给依赖类。优点:灵活。可以选择性地注入需要的对象。缺点:依赖对象初始化完成后由于尚未注原创 2020-11-27 11:36:28 · 2744 阅读 · 1 评论 -
Spring中依赖注入的方式有几种,各是什么?
依赖注入的方式有几种,各是什么?一、构造器注入将被依赖对象通过构造函数的参数注入给依赖对象,并且在初始化对象的时候注入。优点:对象初始化完成后便可获得可使用的对象。缺点:当需要注入的对象很多时,构造器参数列表将会很长;不够灵活。若有多种注入方式,每种方式只需注入指定几个依赖,那么就需要提供多个重载的构造函数,麻烦。二、setter方法注入IoC Service Provider通过调用成员变量提供的setter函数将被依赖对象注入给依赖类。优点:灵活。可以选择性地注入需要的对象。缺原创 2020-10-23 07:05:08 · 2372 阅读 · 0 评论 -
Spring中Autowired和Resource关键字的区别?
Spring中Autowired和Resource关键字的区别?@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。1、共同点两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。2、不同点(1)@Autowired@Autowired为Spring提供的注解,需要导入包org.spr原创 2020-10-23 07:04:58 · 593 阅读 · 0 评论