
Spring
文章平均质量分 79
Spring相关知识点
Minor王智
好好学习,天天向上!
展开
-
Gateway入门
一般情况下我们习惯用GlobalFilter,覆盖它的filter方法来实现请求的自定义操作,例如日志、认证授权、添加Header等操作。SpringCloud推出的一款基于WebFlux+Netty的Reactor响应式编程网关组件,性能相当于Zuul的一倍多。网关在分布式微服务架构中可以做很多事情流控、日志监控、统一认证权限校验等。Gateway的过滤器支持Pre前置处理和Post后置处理两种模式,我们也可以实现Filter接口来自定义Gateway的过滤器,通过Order接口可以实现过滤器排序。...原创 2022-07-28 11:05:19 · 991 阅读 · 0 评论 -
面试必问Spring的核心概念
在Context初始化的时候通过参数(xml或者类等)解析扫描路径,遍历所有的class文件,找出类上标有@Component等注解的类,封装成对应的BeanDefinition对象放入容器的一个Map中。负责生产Bean的Bean,它是一个接口,需要覆盖它的getObject方法,里面可以返回我们具体要返回实例化的Bean。7.当Bean创建完毕以后,如果Bean是单例的,就放入容器的单例池Map中,如果是原型的则不放入,下次getBean()的时候重新走流程创建新的Bean。...原创 2022-07-27 11:36:44 · 433 阅读 · 0 评论 -
OAuth2和JWT
这种模式需要客户端、服务端、三方服务器共同协调完成,这种模式需要三方应用客户端通过授权得到一个Code码,客户端拿着这个code请求自己公司的服务端,服务器通过code去三方应用获取一个Access_Token,得到三方的Access_Token以后,服务器就可以调用API获取用户的一些非敏感信息了,例如可以拿到用户的头像、用户名、账号ID、open_id、union_id等。目前主流的版本是OAuth2。这种模式抛弃了用户的概念,客户端以自己的名义发起授权请求,这种模式适用于命令行的一些基础应用。...原创 2022-07-25 13:53:35 · 1977 阅读 · 0 评论 -
面试常问MyBatis原理和二级缓存
MyBatis的二级缓存还可以自定义实现,通过引入ehcache的包来实现二级缓存。原创 2022-07-14 20:39:37 · 269 阅读 · 0 评论 -
SpringMVC流程和父子容器
SpringWebMVC是基于Servlet构建的Web应用框架。web开发领域的MVC架构是基于JSP+Servlet的模式进行开发。Servlet模式的开发效率十分低下,需要配置一堆XML文件,还要做各种参数解析、JSP页面等等。SpringMVC是对Servlet的MVC模式进行了升级,SpringMVC就是将一个前端控制器拿来作为调度控制中心,负责调度和委托各种组件来解析请求,例如委托映射解析器、视图解析器等等。......原创 2022-07-14 20:37:39 · 430 阅读 · 0 评论 -
Spring事务@Transactional注解原理
这个注解的作用不言而喻,就是开启Spring对事务管理的支持。和其他的Enable注解类似,他的底层原理就是通过ImportSelector接口向IOC容器中放入了2个Bean:1.1 AutoProxyRegistrar(AOP的支持)这个Bean的作用就是向IOC容器中注册了一个的实现类,这个抽象类就是AOP的核心实现。所以这个Bean说白了也就是,在Spring Bean初始化后会进行对Advisor的寻找,然后判断当前Bean是否需要进行AOP并且是否有符合的切点,然后进行AOP的操作。这也是一原创 2022-07-12 16:40:11 · 1102 阅读 · 0 评论 -
Spring AOP原理
基于Proxy类的#newInstance( )方法来获取目标对象的代理对象,JDK的动态代理必须实现,因为Java语言不支持多继承,但是支持多实现。实现机制:2.Cglib动态代理Cglib是一个第三方代码生成库,是对ASM字节码技术的二次封装,在运行时动态生成代理对象,它的特点是基于子类继承的关系来实现。特点:基于子类的继承、无法对final修饰的类和方法进行代理、效率高、额外引入Jar包。实现机制:3.ASM字节码技术ASM是一个操纵字节码的工具框架,ASM可以直接生成二进制的class原创 2022-07-12 16:36:38 · 497 阅读 · 0 评论 -
浅谈一下Spring构造推断
这种场景,Spring很好处理,直接通过无参构造实例化得到Bean对象即可。Spring别无选择,只能使用这个构造作为实例化的选择。原创 2022-07-12 16:31:05 · 232 阅读 · 0 评论 -
Spring循环依赖问题和三级缓存
Spring默认是支持的,不过也可以通过容器设置关闭。Spring的循环依赖是基于三级缓存的三个Map来完成的,三个Map各自有各自的作用。传统的循环依赖,不依靠外力干扰肯定是不能实现的,需要一些Map进行实例化过程中的外力干扰。Spring提出了的概念,其实就是3个Map:3.1 循环依赖的解决流程A在实例化过程中,会提前将暴露出来,这个Lamda表达式有可能用不上,也有可能用得上。将这个Lamda表达式缓存在三级缓存这个Map中。如果发生了循环依赖,B在获取A的时候,先去一级缓存拿,拿不到就去二级原创 2022-07-12 16:28:32 · 422 阅读 · 0 评论 -
Spring依赖注入主流程
在XML配置的形式下,在标签中可以手动注入属性的ref引用关系或者指定构造的注入,称之为手动注入的形式(set注入、构造注入)。在标签中可以配置的自动注入方式是byType还是byName还是构造等,在创建Bean的过程中Spring将这个类的所有方法解析出来通过一定的规则进行筛选(例如set方法)然后进行属性注入。它是byType和byName的结合,注解可以使用在:3.2 寻找注入点(postProcessor机制实现)在Bean的实例化阶段时,Spring利用拓展机制调用方法来对Autowired原创 2022-07-12 16:26:36 · 649 阅读 · 0 评论 -
简单梳理下SpringBean生命周期
1.通过ResourcePatternResolve扫描指定包路径下的所有文件。2.每一个class文件在Spring中都抽象成Resource对象。1.利用MetadataReaderFactory解析Resource对象得到MetadatarReader对象。2.解析过程采用的是ASM字节码技术,没有加载类。1.MetadataReader拥有类的所有信息,通过判断类上是否带有@Conditional注解来筛选。2.如果类上有条件注解,或者有excludeFilters等过滤表达式,则匹配的类就直原创 2022-07-12 16:21:44 · 513 阅读 · 0 评论