Bootstrap

Spring总结

  • Spring

    • Spring是什么

      • spring在项目中一直都在用,Spring的核心特性是控制反转(IoC)和面向切面编程(AOP)。

        • IOC
          • IOC控制反转,不用Spring框架的话如果想创建一个对象,就new一个。用了Spring以后就直接把类交给Spring来管理,让Spring给创建对象,Spring就是一个大工厂模式,底层创建对象的方式是通过配置文件+反射的方式,把创建好的对象放到Spring的容器中.

          • 常见问题

            • Spring中bean的生命周期

              • - 实例化bean对象(new) - 设置对象属性(对实例化的bean进行配置,依赖注入) - 检查Aware相关接口并设置相关依赖(设置bean名称,传入spring上下文) - 前置处理 - 初始化预处理 - init初始化 - 后置处理 - 使用 - destroy-method销毁

            • Spring中的bean是单例的还是多例的

              • Bean里有个scope属性,默认配置是singleton单例的,单例是线程不安全的,会导致属性重复使用。如果变成多例的话配置成prototype,我们在项目中的有时候在controller中有大量成员变量的话,就可以用这个多例模式,还要结合的ThreadLocal类修饰一下

            • Spring中Bean的作用范围?

              • Spring中默认的是单例的,变多例的话,得在bean里配置一个scope属性prototype,就会变成多例的,(背会前两个就行)还有三个scope的配置就是和web服务器相关了的,比如说request,session,global-session这三个范围,就跟那个jsp作用差不多,后面三个也不常用

            • Spring中Bean是单例模式的那怎么保证线程安全

              • Bean对象对应的类里存在可变的成员变量的时候并且其中存在改变这个变量的线程时,多线程操作该Bean对象时会出现线程安全。 当多线程中存在线程改变了bean对象的可变成员变量时,其他线程无法访问该bean对象的初始状态,从而造成数据错乱,我们解决方法是: 1.在Bean对象中尽量避免定义可变的成员变量; 2.在bean对象中定义一个ThreadLocal成员变量,将需要的可变成员变量保存在ThreadLocal中

            • Spring中bean的三个缓存

              • 三级缓存是为了解决Spring中bean的循环依赖问题 一级缓存:存放初始化后的单例对象 二级缓存:存放实例化,未完成初始化的单例对象(未完成属性注入的对象) 三级缓存:存放ObjectFactory对象都是Map集合 单例对象先实例化存在于一级缓存中,后存在于二级缓存中,最后初始化完成后放入三级缓存中。

            • 如何解决Spring中的bean的循环依赖问题

              • Spring框架自己默认使用的是三级缓存来解决的单例模式下的循环依赖问题,如果是多例模式那就得手动解决了,可以使用@Lazy注解或者使用@DependsOn注解指定加载的先后顺序.

        • DI
          • DI就是依赖注入,把Spring框架创建好的对象通过@AutoWired按照类型的方式,或者是通过@Resources按照名称的方式注入到程序中进行使用,我们项目中都是用@AutoWired按照类型注入的方式

          • 常见问题

            • Spring中@Autowired和@Resource的区别?

              • @Autowired默认的是按照类型进行注入, 如果没有类型会按照名称(红色字体)进行注入. 如果想直接按照名称注入需要加入@Qualifier("gatheringDao") @Resource默认的会按照名称注入,名称找不着会按照类型来找,如果这里写了名称,就直接按照名称找了不会按类型找@Resource(name = "aaa")

            • Spring的三种注入方式

              • 我们项目中是配置扫描包,通过注解方式注入的,还有通过setter和构造方法的方式注入,还记得有ByType或者ByName方式.

        • AOP
          • AOP就是面向切面编程,它的原理的话,我看过它的底层代码,它实际上就是实现了动态代理机制,以前的话用这个做过事务的控制,现在的话我们都用@Transactionnal注解来控制事务,其实他底层实现还是aop那一套。

          • 常见问题

            • 使用场景

              • 我们以前用过事务管理,也用过他在项目中记录用户的操作日志, 设置切点切面

            • Spring的AOP注解

              • 1. @Aspect:用于定义切面类,标注在切面类上。 2. @Pointcut:用于定义切点,标注在切点方法上。 3. @Before:用于定义前置通知,标注在前置通知方法上。 4. @AfterReturning:用于定义后置通知,标注在后置通知方法上。 5. @AfterThrowing:用于定义异常通知,标注在异常通知方法上。 6. @Around:用于定义环绕通知,标注在环绕通知方法上。 实现切点和切面的代码通常在Spring的配置文件中进行配置,例如在XML配置文件中使用<aop:config>元素来配置切面和切点,或者在Java配置类中使用@EnableAspectJAutoProxy注解来启用AOP功能,并在配置方法中定义切面和切点。

            • Spring中事务的传播特性

              • 知道有7种,常用就那两种,一种是_REQUIRED(瑞块儿):支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择,增删改的方法可以用这个还有一个是SUPPORTS(spos):支持当前事务,如果当前没有事务,就以非事务方式执行。查询的时候可以用这个.

            • Spring是如何管理事务的

              • 我们使用的是Spring给提供的那个默认的管理事务的类DataSourceTransactionManager,用的时候是直接在需要使用事务的service的类中用@Transactional注解的方式来管理事务的,他底层实现也是AOP的方式来管理的事务,事务传播特性使用的是REQUIRED事务传播特性来管理事务的

            • private修饰的私有方法上加@Transactional注解,这个注解生效吗

              • 按原理来说他是不生效的,因为他是私有的方法,SpringAOP通过反射的方式代理不了,所以不生效,除非做暴力反射可以代理

            • 单元测试的时候怎么启动spring容器的

              • 12.单元测试的时候怎么启动spring容器的 这个可以通过读取配置文件的方式也行,用applicationContext读取xml配置文件,其实我更喜欢使用Spring配合junit用注解的方式去启动,

    • 为什么用

      • 简化开发:Spring框架通过IoC(控制反转)和AOP(面向切面编程)等核心特性,极大地简化了企业级应用的开发过程。 解耦:Spring通过IoC实现了组件之间的解耦,使得各个组件可以独立开发和测试,提高了代码的可维护性和可扩展性。 强大的扩展性:Spring框架本身是一个可扩展的平台,它提供了丰富的扩展点,允许开发者根据项目的需求进行定制和扩展。 支持声明式事务管理:Spring提供了声明式事务管理功能,使得开发者可以通过简单的配置或注解来管理事务 集成其他技术:Spring框架可以与多种技术集成,如数据库访问技术(

    • Spring分支

      • SpringMvc

        • SpringMvc是什么

          • Spring MVC是Spring框架提供的一款基于MVC(Model-View-Controller)模式的轻量级Web开发框架。它本质上是对Servlet的进一步封装,主要解决Web层的问题。Spring MVC的角色划分清晰,分工明细,并且和Spring框架无缝结合。其核心组件是DispatcherServlet,负责请求和响应的统一处理和分发。 Spring MVC具有许多优点,如松耦合可插拔的组件结构、高度可配置性、扩展性和灵活性等。它可以帮助开发者更高效地构建Web应用程序,简化开发过程,提高代码的可读性和可维护性。 此外,Spring MVC也是Spring为表示层(UI)开发提供的一整套完备的解决方案,可以与Spring框架的其他部分无缝集成,如业务逻辑层和数据访问层,从而提供从表示层到业务层再到数据层的全套解决方案。 总的来说,Spring MVC是一个强大且灵活的Web开发框架,适合用于构建各种复杂的Web应用程序。

          • 常见问题

            • SpringMVC执行流程?

              • springmvc是一个前端框架用来做控制转发的,它的核心流程有3个,就是用户发送请求到dispatchservlet,dispatchservlet调用相对应的handler,也就是我们通常所说的controller,controller返回modelAndview给dispatchservlet,dispatchservlet将得到的model And view传给viewReslover进行渲染,viewReslover将解析后的model And view传给dispatchservlet,最后dispatchservlet响应给用户。 [扩展] springmvc的入口是servlet,这个servlet是单例的,如果有多个请求同时发出是dispatchservlet自动启动线程。

            • SpringMVC的Controller里可不可以写成员变量

              • 可以写啊,注入的service不就是成员变量么,你是不想问struts2里的获取参数的方式啊?Struts2早就不用了,他那种用成员变量获取参数的方式,在高并发下会造成线程不安全,SpringMVC是使用的形参接收前台数据的,线程比较安全

            • Controller层中都用到过哪些注解,有什么作用?@RequestBody是干嘛的?前端传form表单的话怎么接收

              • 1. @RequestMapping:用于映射请求路径和请求方法。 2. @GetMapping:用于映射GET请求。 3. @PostMapping:用于映射POST请求。 4. @PutMapping:用于映射PUT请求。 5. @DeleteMapping:用于映射DELETE请求。 6. @RequestParam:用于获取请求参数。 7. @PathVariable:用于获取路径变量。 8. @RequestBody:用于获取请求体中的数据。 9. @ResponseBody:用于返回响应体中的数据

            • SpringMVC与Spring是如何整合的

              • 简单的说 springMVC在ssm中整合 就是 在 web.xml 里边配置springMVC的核心控制器:DispatcherServlet; 它就是对指定后缀进行拦截;然后在springMVC.xml里边配置扫描器,可以扫描到带@controller注解的这些类,现在用springMVC都是基与注解式开发, 像@service,@Repository @Requestmapping,@Responsebody 啦这些注解标签 等等 都是开发时用的,每个注解标签都有自己的作用;它还配置一个视图解析器,主要就是对处理之后的跳转进行统一配置 ,大致就是这些,如何使用springMVC获取表单里的数据? 通过形参和表单里的name值保持一致就能获取到

        • 为什么用

          • 与Spring框架的无缝集成:Spring MVC作为Spring框架的一部分,可以充分利用Spring所提供的强大功能。这种集成使得开发者能够在一个统一的框架内解决Web应用的各种问题,从而简化了开发过程并提高了代码的一致性。 清晰的MVC模式实现:Spring MVC实现了清晰的MVC模式,使得业务逻辑、数据和表示层能够完全分离。这有助于减少代码的耦合度,提高代码的可读性和可维护性。同时,MVC模式也使得开发过程更加规范化,有利于团队协作和项目管理。 灵活性和可扩展性:Spring MVC具有很高的灵活性和可扩展性,可以根据不同的应用需求进行配置和扩展。它支持多种视图技术,如JSP、Velocity、FreeMarker等,并且可以通过自定义转换器、编辑器和格式化程序来支持数据绑定和类型转换。此外,Spring MVC还提供了易于扩展的架构,可以与其他Spring框架组件无缝集成,如Spring IoC容器、Spring AOP等。 强大的数据绑定和验证功能:Spring MVC提供了强大的数据绑定和验证功能,可以方便地将请求参数绑定到方法参数上,并支持各种验证规则。这有助于减少手动解析请求参数的繁琐工作,并提高开发效率和代码质量。 松耦合设计:Spring MVC通过控制器和视图的分离,实现了前后端的松耦合。这种设计使得前端和后端可以独立开发、测试和部署,降低了系统的复杂性,提高了开发效率。 支持RESTful风格:Spring MVC对RESTful风格的支持非常好,可以基于URL的不同请求方法来映射不同的请求处理方法。这有助于提高代码的可读性和可维护性,并使得Web应用更加符合现代Web开发的趋势。

      • SpringBoot

        • SpringBoot是什么

          • SpringBoot整合spring,springmvc, SpringBoot :约定大于配置:同样通过自动配置,引入依赖后,加载默认配置文件,如果要自定义的话可以通过 java 类实现, 也可以在全局配置文件(application.properties,application.yml)中定义; SpringBoot优点 1. 快速创建独立运行的Spring项目以及与主流框架集成 2. 使用嵌入式的Servlet容器应用无需打成WAR包 (jar) 3. Starters(场景启动器)自动依赖与版本控制 4. 大量的自动配置,简化开发,也可修改默认值 5. 5.无需配置大量的XML,无代码生成,开箱即用

          • 常见问题

            • 你给我说一下SpringBoot核心注解

              • @SpringBootApplication, 他里面包含了四个注解@SpringBootConfiguration @EnableAutoConfiguration 自动化配置类 @ComponentScan 扫描包 @Configuration 配置类

            • Springboot自动装配机制了解吗

              • 条件化装配:自动配置类通常包含多个条件注解(如@ConditionalOnClass、@ConditionalOnProperty等),这些注解用来判断自动配置是否应该生效。只有当条件满足时,对应的自动配置才会被加载到Spring容器中。 @SpringBootApplication注解:这是Spring Boot应用程序的入口注解,它实际上是一个组合注解,包括了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan。其中,@EnableAutoConfiguration注解启动了Spring Boot的自动配置功能。 META-INF/spring.factories文件:Spring Boot通过扫描META-INF/spring.factories文件来找到所有的自动配置类。这个文件通常包含在Spring Boot的starter依赖中,并且列出了所有需要自动配置的类。 自动配置类:自动配置类通常包含了一系列bean的定义,这些bean会根据应用程序的上下文环境进行条件化装配。自动配置类还可能会配置一些默认属性,这些属性可以在application.properties或application.yml文件中进行覆盖。 属性绑定:自动配置类通常会使用@ConfigurationProperties注解来绑定配置文件中的属性到Java Bean上,从而方便地对配置项进行管理。

            • Spring和Springboot有什么区别

              • Spring是一个完整的框架,提供了很多功能,如IoC、AOP、JDBC等,需要开发者自己配置和集成。而Spring Boot是基于Spring的基础上进行封装和自动配置,让我们可以更快速地搭建和部署应用。2.Spring Boot提供了一些默认的配置,可以快速地启动一个Web应用,而Spring需要开发者自己进行配置。 3. Spring Boot内置了Tomcat、Jetty等Web容器,可以直接运行,而Spring需要开发者自己进行集成。 4. Spring Boot可以通过注解自动配置,减少了开发者的工作量,而Spring需要开发者自己进行配置。 5. Spring Boot可以快速集成其他框架,如MyBatis、Hibernate等,而Spring需要开发者自己进行集成。 总之,Spring Boot是Spring的一种简化和快速开发的方式,可以帮助开发者更快速地构建和部署应用。

            • Springboot配置文件优先级

              • 我知道的优先级是bootstrap.yml优先级最高, 其次是application.yml, 我记得还有一个spring.factories文件,这个文件里可以定义先加载的Starter类

            • Spring在什么情况下事务会失效

              • 差不多知道的有6种情况吧,1.方法不是public修饰的.2.类没有被Spring托管.3.捕获异常的时候捕获的不正确(比如说抛出异常被catch处理了).4.同一类中方法互相调用,A方法没有事务,B方法有事务,A调用了B那么B方法事务也会失效.5.没有配置事务管理器,没有加@Transactional注解,6.数据库本身不支持事务(比如说数据库存储引擎是MyISAM的)

            • .SpringBoot项目是打包成war包还是jar包

              • 我们公司Springboot项目,不打成jar包和war包,我们公司在部署Springboot项目是结合Docker和git和Maven还有Jenkins一块自动化部署的,在jenkins上写一些shell脚本自动打包部署的,大概流程就是先把Springboot项目打包成镜像文件,然后再创建成容器。

            • 32. 有没有写过SpringBoot的SPI? 有没有写过SpringBoot的Starter类

              • SPI就是一种基于接口的动态扩展机制,Java SPI相当于Java里面提供的一套接口,第三方可以实现这个接口来完成功能的扩展,Java中比较典型的实现案例就是数据库驱动.java.jdbc.Driver,他就是一个接口JDK没有给具体的实现,如果是Oracle数据库就是oracle.jdbc.OracleDriver,如果是MySQL数据库就是com.mysql.jdbc.Driver,开发中根据实际的驱动连接到对应的数据库. 那SpringBoot中的starter就相当于是SpringBoot的SPI,看我们项目中的pom文件里引入的比如说spring-boot-starter-data-redis这个starter启动器,我们引入好了,只需要在application.yml文件中配置一些Redis的连接信息即可,如果是官方提供的就是以Spring开头的,如果是第三方自己维护的,那就是以xxx-spring-boot这其实就是约定大于配置的一种体现. 我们项目中也写过一些自定义的Starter类,在启动Springboot的时候进行加载,需要在META-INF目录下的spring.factories这个配置文件中提前配置好即可.

        • 为什么用

          • 简化配置:Spring Boot遵循“约定优于配置”的原则,自动配置Spring应用程序所需的各项设置, 快速开发:Spring Boot提供了丰富的开发工具和插件,支持热部署 微服务架构支持:Spring Boot是构建微服务架构的理想选择。它提供了微服务组件,如服务注册与发现、 嵌入式Web容器:Spring Boot使用嵌入式的Servlet容器(如Tomcat、Jetty等),

      • SpringCloud

        • SpringCloud是什么

          • Spring Cloud是一个微服务框架,它提供了一系列的组件和工具,用于支持微服务的开发和部署。其主要特点包括微服务支持、开放性和可扩展性、高可用性和容错性,以及基于云原生架构的设计。Spring Cloud对微服务基础框架Netflix的多个开源组件进行了封装,并与云平台和Spring Boot框架集成,为开发者提供了快速构建分布式系统的工具。通过Spring Cloud,开发者可以快速地启动服务或构建应用,并快速与云平台资源进行对接。同时,Spring Cloud为微服务架构开发涉及的配置管理、服务治理、熔断机制、智能路由、微代理、控制总线等操作提供了一种简单地开发方式。 Spring Cloud的主要功能包括服务注册与发现、负载均衡、断路器、网关、配置中心、分布式追踪等,这些功能都可以使用Spring Boot的开发风格实现一键启动和部署。通过将各家公司开发的成熟的服务框架组合起来,并通过Spring Boot风格进行再封装,Spring Cloud屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。 总的来说,Spring Cloud是一个非常成熟、可靠、功能丰富的微服务框架,它为开发者提供了很多便利,可以帮助我们更加轻松地构建和部署微服务应用。

          • 常见问题

            • 说一下你对微服务的一个理解?

              • 其实微服务就是把项目按照模块进行拆分,后期呢进行部署和开发还有维护呢,分工会比较明确一些, 像他里面的微服务直接互相通信会用到Feign组件,注册中心会用到nacos什么的

            • 老版本SpringCloud的常用组件挨个介绍一下

              • Eureka组件(服务发现)音标(ju`ri:kə): 相当于我们使用的dubbox的时候zookeeper注册中心. Feign组件: 调用服务的时候用的组件 Hystrix(hist`riks)熔断器: 我们在调用服务的时候,有可能涉及到服务的连锁调用,比如说A服务调用B服务,B服务里还调用了C服务, 使用A服务的时候,B服务和C服务都得正常运行才可以使用,B调用C没有调通的时候, B直接给A返回内容, 不至于像以前报错. 服务网关 zull: 前后端进行调用的时候可以,可以走同一个IP地址,因为项目端口号太多,配置这个以后就可以直接走一个端口号,他自动会给你分配具体调用的哪一个端口 分布式配置Spring Cloud Config:我们把多个项目的配置文件归置为一个,修改配置文件以后,不用再重新部署某一个项目啦. 消息总线:Spring Cloud Bus: 修改完配置文件以后不用重启项目.

            • SpringBoot和SpringMVC与SpringCloud关系?

              • 1.我理解的是SpringBoot包含了Spring和SpringMVC,还集成了tomcat和jetty两个服务器,改为全注解的开发,约定大于配置.2.SpringCloud是通过Springboot把其他的通信组件等等进行了封装,你如果使用SpringCloud的,那就必须得使用SpringBoot,使用SpringBoot的话不一定非得使用SpringCloud.

            • SpringBoot如何直接获取form表单数据

              • 也是通过形参里添加参数就行啊,和form表单里的name值对应上就行了啊,在form表单的action中配置上请求改方法的路径

            • 你用了SpringCloud微服务,分布式的项目,微服务之间是如何通信?

              • 我们把所有的微服务都发布到Eureka注册中心上了,服务之间互相调用的时候我们用的是Feign进行通信的,而且他自带负载均衡,自带实现那个Ribbon那个接口,通信协议是Http协议,底层使用的应该是RestTemplate

            • SpringCloud里的负载均衡的策略有哪些?是怎么负载均衡的?

              • 这个知道,用的Ribbon那个组件实现的负载均衡,底层代码也看过,有两种负载均衡的方式,一种是轮询,还有一种随机方式,Feign默认支持负载均衡,我们一般都不会手动配置。

            • SpringCloud里什么时候触发hystrix熔断器

              • 在网络中断,或者是响应超时的时候,都会触发这个熔断器,如果使用的是SpringCloudAlibaba的Sentinel熔断器的话如果配置的QPS上限也会触发熔断,Hystrix里的熔断的方式无非两种,一种是线程隔离,还有一种就是服务降低,我知道那个断路器里的开关有三种状态,触发熔断器了就会处于打开状态,不是一直开着不放过任何一个连接,而是默认休眠5秒钟(这个数据也可以配置),然后会进入到一个半开状态,当有服务请求过来的时候,还试图去访问下要调用服务是否能调用上,如果能调用上,关闭熔断器,正常访问服务去。

            • Sentinel和hystrix的区别?

              • 我们最近的项目就是用的sentinel做的熔断,他比hystrix强大很多,最大的区别是Sentinel提供了后台管理功能,可以实时的看到服务之间调用的数据,底层来说他们的侧重点不一样: Hystrix 的关注点在于以隔离和熔断为主的容错机制,超时或者熔断的调⽤会快速的失败,并提供了fallback机制,⽽Sentinel 的侧重点在与:多样化的流量控制(开发人员可以进入到后台管理进行根据自己的服务器配置,限制QPS的访问量),还有熔断升级(可以自定义根据对应的资源执行相应的限流/降级/负载保护策略),我差不多知道这么多

            • Nacos和Eureka的区别

              • 我理解的这两个虽然都是SpringCloud的注册中心,但是Nacos要比Eureka更强大一些,因为他提供了一个可视化的管理后台,有自己的配置中心,eureka还得结合的config组件进行配置中心,服务列表更新这一块Nacos采用的使用AP+CP的模型,列表更新速度会比Eureka快,因为Nacos支持服务端主动检测提供者状态,临时实例采用的是心跳模式,非临时的采用的是主动检测模式,而Eureka只采用AP模型,我还知道nacos支持K8S,eureak不支持。

            • Feign和openFeign的区别

              • 他们底层都是内置了Ribbon负载均衡的组件去调用注册中心的服务。他们的的归属来说Feign是Netflix公司写的,算是SpringCloud中的第一代负载均衡客户端。 OpenFeign是SpringCloud自己研发的,在Feign的基础上支持了SpringMVC的注解,如@RequesMapping等,算是SpringCloud中的第二代负载均衡客户端。我们项目中现在用的是openFeign

            • Zuul和Gateway的区别

              • 我知道的是Zuul使用的是阻塞式的 API,不支持Websockets长连接,底层是servlet,Zuul处理的是http请求,没有提供异步支持,流控等均由hystrix支持。Gateway是不能和传统的Servlet容器一起使用,也不能打包成一个WAR包,但是提供了异步支持,是一个非阻塞的API,也支持Websockets这样的长连接,提供了抽象负载均衡,提供了抽象流控,gateway具有更好的扩展性,并且其已经发布了2.0.0的RELESE版本,稳定性也更好了

            • 14. nacos注册中心宕机的其他服务还可以调用么

              • Dubbo和Nacos可以一起使用。Dubbo可以使用Nacos作为注册中心和配置中心,Nacos提供了Dubbo的服务注册和发现、配置管理等功能。通过在Dubbo中配置Nacos的地址,Dubbo可以与Nacos进行交互,实现服务的注册和发现。同时,Nacos还可以提供Dubbo的动态配置管理,可以实时修改Dubbo的配置信息,从而实现动态调整服务的参数

            • Sentinel熔断怎么熔断的

              • Sentinel熔断的侧重点来说是流控,一般方式都是服务降级,线程隔离,我们的熔断是通过Sentine后台进行配置的,可以配置流控模式,在需要配置流控的链接上可以使用直接或者关联或者链路的模式进行熔断,流控的效果可以在后台配置成快速失败,或者warm up模式,或者是排队等待,看具体业务具体配置,大概知道这么多,具体配置的话,我电脑上有文档可以操作。

            • nacos怎么配置的,怎么注册的

              • 我们公司开发的时候是每个人电脑上都有一个项目经理给的window版本的nacos注册中心,我们公司项目中主要使用nacos的两个特性,一个是注册中心的,还有一个是配置中心,我们在本地的Springboot项目中有一个bootstrap.yml文件,里面配置一个nacos注册中心的地址,对应的微服务的名字,在nacos上创建一个配置文件,我们把常用的配置文件放到nacos配置中心上,到时候直接去配置中心上读取项目配置信息。

            • nacos上的配置文件可以配置环境共享和环境隔离吗?环境隔离的配置之间可以互相访问么

              • 可以配置的,我们项目中都是配置的有开发环境还有测试环境,还有生产环境,通过修改本地的bootstrap中的profiles的active属性,就可以切换不用的环境.环境隔离的配置文件之间不能互相访问,如果想访问其他配置文件的话需要配置共享环境。

            • OpenFeign之间怎么通讯的

              • 我们通过在接口中配置@FeignClient注解里面写上微服务的ID,微服务之间请求使用的是http协议进行通信的

            • 20. 用了Gateway以后接口有没有做加密和解密?

              • 做了,我们在网关用解析的jwt加密后的token码,如果解密成功就可以继续访问

        • 为什么用

          • 用了他的的好处就是可以用他里面的那些组件实现微服务之间的通信比较简单,比如说...把组件挨个说一下。 我们在用的时候是结合springboot还有mybatis一起用的,比如说使用了SpringBoot的话就简化了好多的代码量,加快开发速度。

;