download:高级爬虫实战 - 零碎把握破解反爬技能 挑战高薪
什么是 SpringBoot?
SpringBoot 是 Spring 开源阻止下的子项目,是 Spring 组件一站式解决打算,次要是简化了使用 Spring 的难度,简省了沉重的配置,提供了各种启动器,使开发者可能疾速上手。
为什么要使用 SpringBoot?
疾速开发,疾速整合,配置简略,内嵌服务容器
SpringBoot 有哪些有点?
容易上手,提成开发效率,简略开发。
开箱即用,简省繁琐配置
提供了一系列大型项目的非业务性功能。例如: 内嵌服务器、运行数据监控、运行状况查看、和内部优化配置等
总结: 编码简略、配置简略、部署简略、监控变简略
SpringBoot 核心注解是哪几个?
启动类下面的 @SpringBootApplication,它也是 SpringBoot 的核心注解,蕴含了以下 3 个注解
@SpringBootConfiguration: 组合了 @Configuration 注解,实现配置文件的功能
@EnableAutoConfiguration: 打开主动配置的功能
@ComponentScan:扫描组件
SpringBoot Starter 的工作原理
在 SpringBoot 启动时由 @SpringBootApplication 注解会主动去 maven 去读取每个 starter 中的 spring.factories 文件,该文件外面配置了所有需要被创建的 bean,并且进行主动拆卸把 bean 注入 Spring content 中去
SpringBoot2.x 与 SpringBoot1.x 有什么区别?
配置变更
JDK 版本升级
第三方类库升级
响应式 Spring 编程反对
Http/ 2 反对
配置属性绑定
SprigBoot 反对什么前端模板?
thymeleaf、freemarker、jsp
开启 SpringBoot 个性有哪几种形式?
集成 Spring-boot-starter-parent 我的项目
导入 Spring-boot-dependencies 我的项目依赖
SpringBoot 实现热部署有哪几种形式?
Spring loaded
Spring-boot-devtools
SpringBoot 事物怎么使用?
在 SpringBoot 启动类下面使用 @EnableTransactionManagement 开启事物之后 在 service 方法下面使用 @Transactional
Aysnc 异步调用方法
在 SpringBoot 中使用异步调用是很简略,只需要在方法上使用 @Async 注解就可能实现方法的以部调用。需要开启 @EnableAsync 开启 @Async 才会失效。
如何在 SpringBoot 启动的时候运行一些特定的代码?
可能实现接口 ApplicationRunnher 或者 CommandLineRunner,而后在 run 方法执行特定操作,该类会在 SpringBoot 启动实现运行
SpringBoot 有哪几种读取配置的形式?
SpringBoot 可能通过 @PropertySource,@Value,@Enviornment,@ConfigurationProperties 注解来绑定变量。
SpringBoot 的主动配置原理是什么?
次要是 SpringBoot 的启动类上的核心注解 @SpringBootApplication 注解配置类,有了这个主配置类启动的时候就会为 SpringBoot 开启一个 @EnableAutoConfiguration 注解主动配置功能
有了这个 @EnableAutoConfiguration 的话就会
从配置文件 META_INF/Spring.factories 加载可能用到的主动配置类
去重,并将 execulde 和 excludeName 属性携带的类排除
过滤,将满足条件的主动配置类返回
SpringBoot 可能使用哪几种形式来加载配置?
properties
YAML 文件
零碎环境变量
命令行参数
还有更多形式
什么是 YAML?
YAML 是一种可读的序列化语言,通常用于配置文件,与属性文件相比,YAML 更加结构化,更少混淆。
YAML 配置的劣势有哪些?
配置有序
简单明了
相比 properties 配置文件,YAML 还有一个缺点,不反对 @PropertySource 注解导入自定义的 YAML 配置
SpringBoot 是否可能使用 XML 配置?
是可能的,然而 SpringBoot 推荐采纳 Java 配置而且而非 XML 配置。
Springboot 核心配置文件是什么?bootstrap.properties 和 application.properties 的区别
bootstrap 由父 ApplicationContext 加载的,比 application 优先加载,配置的应用程序上下文的疏导阶段失效。一般来说在 SpringCloud 配置的时候会使用到这个文件
application 由 ApplicationContext 加载,用于 SpringBoot 我的项目的自动化配置
SpringBoot 多数据源拆分思路?
先在 properties 配置文件中配置两个数据源,创建分包 mapper,使用 @ConfigurationProperties 读取 propeties 中的配置,使用 @MapperScan 注册到对应的 mapper 中去
SpringBoot 多数据源事物如何治理?
第一种形式是在 service 层的 @TransactionManager 中使用 transactionManager 指定 datasourceConfig 配置的事物
第二种是使用 ta-atomikos 实现分布式事物治理
保护 SpringBoot 利用的方法有哪些?
生产种使用 Https
使用 snyk 查看依赖关系
升级到最新版本
启动 CRSF 保护
使用安全策略形式 XSS 攻打
如何实现 SpringBoot 应用程序的安全性?
使用 spring-boot-starter-security 依赖项,并且增加安全配置。配置类扩大 WebSecurityConfigurerAdapter 并且覆盖
比较 Spring security 和 Shiro 的优缺点?
security 是一个重量级框架,shiro 是个轻量级框架
security 配置繁琐,shiro 简略
security 功能弱小 shiro 功能简略
SpringBoot 种如何解决跨域问题?
跨域可能在前端通过 JSONP 来解决,然而只能解决 GET 请求。SpringBoot 可能通过实现 WebMvcConfigurer 接口而后重写 addCorsMappings 方法解决跨域问题。
SpringBoot 中的监视器是什么?
SpringBoot actuator 是 spring 启动框架中的重要功能之一,SpringBoot 监视器可帮助拜访生产环境的利用以后状态。
如何监听 SpringBoot 微服务?
SpringBoot 提供监视器端点,以及监控各个微服务的度量,这些端点对于获取是否失常运行很有帮助。咱们将使用 SpringBoot Actuator 之上,它提供了一个 webui 使咱们可监督多个应用程序的度量
SpringBoot 我的项目如何性能优化?
我的项目比较大就采纳 @Compoment 指定扫描包范畴
在我的项目启动时设置 JVM 初始化内存和最大内存雷同
SpringBoot 微服务中如何实现 session 共享?
使用 Spring session+redis 实现 session 共享
SpringBoot 中的 starter 到底是什么?
这份 starter 是基于 spring 来实现的,它提供一个自动化配置拆卸类。在这个配置中通过条件来决定一个配置是否失效。而后提供了一系列的默认配置,也可能开发者自定义配置
什么是 springboot
用来简化 spring 利用的初始搭建以及开发过程 使用特定的形式来进行配置(properties 或 yml 文件)创建独立的 spring 引用程序 main 方法运行
嵌入的 Tomcat 无需部署 war 文件
简化 maven 配置
主动配置 spring 增加对应功能 starter 自动化配置
springboot 罕用的 starter 有哪些
spring-boot-starter-web 嵌入 tomcat 和 web 开发需要 servlet 与 jsp 反对
spring-boot-starter-data-jpa 数据库反对
spring-boot-starter-data-redis redis 数据库反对
spring-boot-starter-data-solr solr 反对
mybatis-spring-boot-starter 第三方的 mybatis 集成 starter
springboot 主动配置的原理
在 spring 程序 main 方法中 增加 @SpringBootApplication 或者 @EnableAutoConfiguration
会主动去 maven 中读取每个 starter 中的 spring.factories 文件 该文件里配置了所有需要被创建 spring 容器中的 bean
springboot 读取配置文件的形式
springboot 默认读取配置文件为 application.properties 或者是 application.yml
springboot 集成 mybatis 的过程
增加 mybatis 的 starter maven 依赖
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.2.0
在 mybatis 的接口中 增加 @Mapper 注解
在 application.yml 配置数据源信息
springboot 如何增加【修改代码】主动重启功能
增加开发者工具集 =====spring-boot-devtools
org.springframework.boot
spring-boot-devtools
true
什么是微服务
以前的模式是 所有的代码在同一个工程中 部署在同一个服务器中 同一个我的项目的不同模块不同功能互相抢占资源
微服务 将工程根据不同的业务规定拆分红微服务 微服务部署在不同的机器上 服务之间进行相互调用
Java 微服务的框架有 dubbo(只能用来做微服务),spring cloud(提供了服务的发现,断路器等)
springcloud 如何实现服务的注册和发现
服务在公布时 指定对应的服务名(服务名包含了 IP 地址和端口)将服务注册到注册核心(eureka 或者 zookeeper)这一过程是 springcloud 主动实现 只需要在 main 方法增加 @EnableDisscoveryClient 同一个服务修改端口就可能启动多个实例
调用方法:传送服务名称通过注册核心获取所有的可用实例 通过负载平衡策略调用(ribbon 和 feign)对应的服务
ribbon 和 feign 区别
Ribbon 增加 maven 依赖 spring-starter-ribbon 使用 @RibbonClient(value="服务名称") 使用 RestTemplate 调用近程服务对应的方法
feign 增加 maven 依赖 spring-starter-feign 服务提供方提供对外接口 调用方使用 在接口上使用 @FeignClient("指定服务名")
Ribbon 和 Feign 的区别:
Ribbon 和 Feign 都是用于调用其余服务的,不过形式不同。1. 启动类使用的注解不同,Ribbon 用的是 @RibbonClient,Feign 用的是 @EnableFeignClients。2. 服务的指定地位不同,Ribbon 是在 @RibbonClient 注解上申明,Feign 则是在定义抽象方法的接口中使用 @FeignClient 申明。3. 调用形式不同,Ribbon 需要自己构建 http 请求,模拟 http 请求而后使用 RestTemplate 发送给其余服务,步骤相当繁琐。Feign 则是在 Ribbon 的基础上进行了一次改进,采纳接口的形式,将需要调用的其余服务的方法定义成抽象方法即可,不需要自己构建 http 请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法残缺一致。
springcloud 断路器的作用
当一个服务调用另一个服务因为网络原因或者自身原因出现问题时 调用者就会等待被调用者的响应 当更多的服务请求到这些资源时
导致更多的请求等待 这样就会发生连锁效应(雪崩效应)断路器就是解决这一问题
断路器有残缺打开状态
肯定工夫内 达到肯定的次数无奈调用 并且多次检测没有复原的迹象 断路器残缺打开,那么下次请求就不会请求到该服务
半开
短时间内 有复原迹象 断路器会将部分请求发给该服务 当能失常调用时 断路器敞开
敞开
当服务一直处于失常状态 能失常调用 断路器敞开