
spring
文章平均质量分 61
lisin-lee-cooper
这个作者很懒,什么都没留下…
展开
-
Spring 解决循环依赖
一. Bean的生命周期二. 什么是什么是三级缓存 /** 1级缓存 Cache of singleton objects: bean name to bean instance. */ private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256); /** 2级缓存 Cache of early singleton objects: bean name to bean i原创 2022-03-27 23:43:39 · 665 阅读 · 0 评论 -
Spring 面试知识点
一. IOC 部分1.1 IOC思想将获取对象的方式交给了Spring容器,这种将控制权交给别人的思想称作控制反转,根据beanName去获取和创建对象的过程称作依赖查找1.2 依赖查找和依赖注入的区别依赖注入的作用目标通常是类成员,依赖查找的作用目标可以是方法体内也可以是方法体外;依赖注入通常借助一个上下文被动的接受,依赖查找同产主动使用上下文搜索。1.3 BeanFactory和ApplicationContext 的对比BeanFactory 接口提供了一个抽象的配置和对象的管理机制A原创 2022-03-24 14:56:47 · 911 阅读 · 0 评论 -
SpringAop简述
作用:Spring 的两大特性之一, 主要提供面向切面的编程思想,区分于面向对象编程。原理(动态代理+反射):spring通过反射的形式,为目标类动态生成代理类,将切面植入到代理对象中。这样代理类可以在目标方法执行之前、之后,处理一些额外的通知事件。aop目标aop的最终目的是实现代码的完全解耦。实现完全模块化,使得大型项目开发与管理,更加容易代理静态代理:目标接口,目标类,代理类。对于大型复杂的项目,编写太多的目标代理类是个非常庞大的工程。动态代理:jdk动态代理:动态生成的代理类,和目标原创 2022-03-09 23:19:23 · 254 阅读 · 0 评论 -
ratelimiter-starter 限流框架简化版
一.原理1.基于互联网背景,客户增长数剧增,服务稳定性受到严峻的挑战,机器CPU和内存秒秒钟打满,导致服务器宕机。2.为了实现服务高可用,CTO下达的指令一般都是说服务器需要达到99.99%可用,其实都是吹皮的,但是我们朝着这个目标矢志不渝地奋斗终生,从而实现自己的人生价值,进而实现中华民族的伟大复兴3.限流可用从不同的角度出发,市面上也有比较有名的阿里的Sentinel,感兴趣的同学可用去深究,本篇文章主要是从Java拦截器的限制用户多次请求的角度来限制用户的访问量,大家也可以基于此框架来定制适用于原创 2021-05-28 15:52:22 · 316 阅读 · 1 评论 -
SpringIOC的循环依赖解析
一.示例代码及解析循环依赖分为自身依赖于自身、互相循环依赖、多组循环依赖,代码如下所示@Getter@Setterpublic class ClazzA { @Autowired private ClazzB b; @Autowired private ClazzA a;}@Setter@Getterpublic class ClazzB { @Autowired private ClazzA a;}public class原创 2021-05-08 16:43:40 · 102 阅读 · 0 评论 -
Spring @Conditional 注解详解
一.注解的定义:根据条件注入Bean// 可作用于类和方法上@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Conditional { Class<? extends Condition>[] value();}@FunctionalInterfacepublic interface Conditi原创 2021-04-27 17:33:10 · 208 阅读 · 0 评论 -
SpringBoot starter插件的开发
一.需求背景为了是业务代码和功能的解耦,或者说减少代码的侵入性,像日志和登录拦截,往往都是在每个微服务中都编写相同的代码,为了使开发迅速和减少代码的编写往往都可以抽成一个starter,需要使用此功能的微服务依赖此jar包即可,无需编写相同的代码此案列拦截非白名单用户的demo二.demo 代码新建springboot项目。作为一个插件被其他服务依赖,其实功能就是一个切面的功能方法抽取@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.原创 2021-04-21 16:54:24 · 373 阅读 · 0 评论 -
Spring Bean的创建过程
一.Bean创建核心流程图二.Bean 创建的源码分析@Override public <T> T getBean(String name, Class<T> requiredType) throws BeansException { return doGetBean(name, requiredType, null, false); }protected <T> T doGetBean( String name, @Nullable Class&原创 2021-04-20 10:49:35 · 168 阅读 · 0 评论 -
SpringIOC源码分析
一.源码地址下载SpringFramework源码git仓库地址下载源码后用idea打开 自动下载gradle 构建项目二.demo示例代码和源码解析项目构建完成后在spring-context 的模块下编写代码public interface HelloService { String hello();}public class HelloServiceImpl implements HelloService{ @Override public String hello() {原创 2021-04-15 19:25:55 · 162 阅读 · 0 评论 -
SpringMVC源码解析(5.2.3版本)
一.将请求和url与Controller绑定1.在spring容器启动时,在实例化Controller bean后,调用afterPropertiesSet() ->initHandlerMethods()->processCandidateBean() ->detectHandlerMethods 解析bean的方法protected void detectHandlerMethods(Object handler) { Class<?> handler原创 2021-04-14 20:01:30 · 244 阅读 · 0 评论 -
SpringMVC执行流程
1.时序图2.执行流程1、前端请求到前端控制器DispatcherServlet2、DispatcherServlet收到请求调用处理映射器HandlerMapping3、处理映射器根据请求url找到具体的处理器(ApplicationContext初始化时用Map保存所有的url和controller对应关系),生成处理器执行链HandlerExecutionChain(包含处理器对象和处理器拦截器)返回给DispatcherServlet4、DispatcherServlet根据处理器Han原创 2021-04-14 16:11:17 · 132 阅读 · 0 评论 -
SpringMVC搭建项目入门教程
1.新建项目 选中Spring ->Spring MVC 模块 点击next 和 Finish注意:将生产的lib文件移动到WEB-INF目录下2.配置 web.xml和SpringMVCxml文件<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSche原创 2021-04-14 15:26:40 · 130 阅读 · 0 评论 -
SpringIOC特性
一alias(别名)1.xml方式配置public class TestService { public TestService() { System.out.println("TestService初始化成功"); }}<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi原创 2021-04-08 20:49:46 · 176 阅读 · 0 评论 -
Bean如何注册到Spring容器中
一.Spring如何管理bean1.@Resource 默认根据name匹配,未找到再根据type匹配;2.@Autowired 根据类型匹配;3.无实现类,根据接口生成代理类,把代理类放到FactoryBean的实现中,最后把FactoryBean的实现类注册到Spring容器中,本篇具体讲第三种方式。二.核心步骤方法public interface ITestDao { String test(); }public class ProxyBeanFactory im原创 2021-04-05 17:48:37 · 346 阅读 · 0 评论