- 博客(16)
- 收藏
- 关注
原创 @PostConstruct和@PreDestroy
metadata.invokeDestroyMethods(bean, beanName) 此方法执行后,执行到@PreDestroy,@PostConstruct 注解加在一个 bean 的方法上,当此 bean 被 spring-ioc 初始化时,自动调用此方法。### ----------------------------------------@PostConstruct和@PreDestroy。
2024-03-15 21:44:07
436
原创 创建bean的流程五
/ 有AOP的情况下会调用getEarlyBeanReference方法,在getEarlyBeanReference方法中会将原本的bean放入到earlyProxyReferences中,// 如果没有aop,就不会调用getEarlyBeanReference方法,earlyProxyReferences是空的,remove出来是null,条件成立,就会生成一个代理对象。Spring同时也提供了销毁方法的扩展入口,对于销毁方法的扩展,除了我们熟知的配置属性destroy-method方法外,
2024-03-15 21:14:47
778
原创 创建bean的流程四
else if (javaxInjectProviderClass == descriptor.getDependencyType()) // javaxInjectProviderClass类型的特殊处理。if (result == null) // 默认的getLazyResolutionProxyIfNecessary(...)方法返回null。if (Optional.class == descriptor.getDependencyType()) // Optional类型的特殊处理。
2024-03-15 21:00:46
666
原创 创建bean的流程三
/ 获得构造函数的参数名称。// 获得构造函数的参数类型集合。/** 步骤2:如果配置了instanceSupplier,则通过调用Supplier#get()方法来创建bean的实例,并封装为BeanWrapper实例 */
2024-03-15 20:59:42
1370
原创 创建bean的流程二
## --------------------------创建bean的准备,如resolveBeanClass解析类、prepareMethodOverrides、resolveBeforeInstantiation -> doCreateBean。// 解析bean的类型Class。/** 1:如果可以获得className,并且evaluated与className不同,则以evaluated为准 *//** 2:以mbd.getBeanClassName()为准,来创建Class实例对象 */
2024-03-15 20:58:18
491
原创 spring boot创建tomcat容器
https://www.cnblogs.com/junzisi/p/15616519.html原文链接:https://blog.youkuaiyun.com/m0_63437643/article/details/123068012### spring boot创建tomcat容器起点-> SpringApplication.run()-> SpringApplication.refreshContext
2024-03-14 17:48:35
528
原创 ServletContextInitializer的作用
> StandardContext.startInternal() SpringApplication.run线程外的一个新线程。-> RegistrationBean.onStartup(ServletContext servletContext) 由于RegistrationBean implements。
2024-03-14 17:47:54
684
原创 @RefreshScope
ScopedProxyMode.TARGET_CLASS (默认cglib代理),当ScopedProxyMode 为TARGET_CLASS 的时候会给当前创建的bean 生成一个代理对象,会通过代理对象来访问,每次访问都会创建一个新的对象,就是@RefreshScope 实现的本质了。@RefreshScope的Bean都会被Spring做AOP动态代理,每次调用方法之前,都会去IOC中调用getBean方法获取真正的原始Bean,而原始Bean又被存放在GenericScope对象中的Map里,
2024-03-14 17:41:17
508
原创 spring boot配置文件
/1. 封装ConfigDataImporter对象,里面有解析ConfigDataLocation -> ConfigDataResource 和load ConfigDataResource -> ConfigData之类的操作。------------------------------------------------------------------------------------进入BootstrapConfigFileApplicationListener。
2024-03-14 16:07:08
448
原创 ApplicationContextInitializer的加载和使用触发点
并依次触发初始化器的 initialize 方法。#### ---------------------------------------ApplicationContextInitializer的加载和使用触发点。#### ---------------------------------------ApplicationContextInitializer实现主要有3中方式。下的配置为 context.initializer.classes 的值,这个值是初始化器的全路径名,多个之间用逗号隔开。
2024-03-13 18:30:10
664
原创 nacos服务注册与发现
(开启nacos的服务注册与发现功能)@ConditionalOnProperty(value = "spring.cloud.service-registry.auto-registration.enabled", 属性为true时,此配置类会被加载。### ----------------------------------------------------------------------------------------------nacos服务注册与发现。
2024-03-13 18:29:07
1288
原创 创建bean的流程一
/ 有AOP的情况下会调用getEarlyBeanReference方法,在getEarlyBeanReference方法中会将原本的bean放入到earlyProxyReferences中,// 如果没有aop,就不会调用getEarlyBeanReference方法,earlyProxyReferences是空的,remove出来是null,条件成立,就会生成一个代理对象。所以remove出来的bean和参数中的bean是同一个,条件不成立,所以不会再生成一个新的代理对象。
2024-03-12 21:00:15
488
原创 理解nacos的配置变更如何更新到应用的配置上
第六步:PropertySourceBootstrapConfiguration的initialize方法中,首先就是将属性源定位器propertySourceLocators排序(这里有NacosPropertySourceLocator ),然后遍历进行定位,放进封装成PropertySource并放进集合里。此时BootstrapApplicationListener监听到这个事件,在onApplicationEvent方法中创建一个SpringApplicationBuilder,就是建造者模式,
2024-03-10 18:11:32
2125
原创 openfeign
HttpClient.New(..)是一个静态方法,大致的逻辑:它会调用 KeepAliveCache 类型的静态成员 kac 的get方法,去首先获取缓存中的HttpClient 客户端实例。(7)HttpClient的 putInKeepAliveCache方法,主要以请求的 url 值作为 key (因为这里的第二个参数总是写死为 null ),以当前 HttpClient 实例为 value,放入到KeepAliveCache 类型的静态成员 kac 缓存中,以便后面进行复用。
2024-03-10 18:10:47
1753
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅