- 博客(19)
- 收藏
- 关注
原创 SpringBoot外部化配置
public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context = null; ArrayList exceptionReporters = new ArrayList(); this.configureHeadless.
2021-03-03 08:47:42 375 1
原创 Feign请求过程的处理
上文说明了FeignClient接口在Spring容器中都是生成关联FeignInvocationHandler的代理类,所以在调用FeignClient接口的方法时,都会执行FeignInvocationHandler.invoke方法,FeignClient的接口方法的信息都被解析封装在SynchronousMethodHandler中,并以FeignClient接口的Method为key,SynchronousMethodHandler为value,保存在dispatch变量的Map结构中。在Feig
2020-09-19 17:44:34 1014
原创 ConfigurationClassParser
在ConfigurationClassParser.parse解析完之后,调用deferredImportSelectorHandler.process()对ConfigurationClassParser在执行parse方法完成对Component,ComponentScans等标注类扫描之后,会调用ConfigurationClassParser.DeferredImportSelectorHandler.process方法。获得所有自动装配的配置类之后,通过条件过滤,将不符合配置条件的类排除掉。
2024-08-02 22:40:05 690
原创 Springboot Tomcat启动
SpringApplication对象创建时,在构造函数中调用WebApplicationType.deduceFromClasspath方法,检查环境中是否加载reactive.DispatcherHandler、servlet.DispatcherServlet、servlet.ServletContainer、servlet.Servlet、context.ConfigurableWebApplicationContext等Java类。
2024-08-02 22:39:51 707
原创 Springboot
如果beanFactory没有注册org.springframework.context.annotation.internalConfigurationAnnotationProcessor,则注册ConfigurationClassPostProcessor,在AnnotatedBeanDefinitionReader的构造函数中,通过AnnotationConfigUtils.registerAnnotationConfigProcessors注册AnnotationConfigProcessor。
2024-08-02 22:39:15 416
原创 docker命令笔记
1:搜索docker镜像docker search (比如搜索tomcat:docker searchtomcat)2:image(镜像)相关命令2.1拉去指定版本的imagedocker pulldocker pull tomcat:8-jre8 (拉去指定版本的image)2.2查看本地image列表docker imagesdocker image ls2.3删除imagedocker image rm imageiddocker rmi -f i...
2021-11-20 19:43:40 817
原创 docker安装
1:如果安装了docker,可以先卸载yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-enginerm -rf /etc/systemd/system/docker.service.drm -rf /var/lib/do
2021-11-20 17:21:36 133
原创 k8s安装
1、查看系统信息:lsb_release -a2、系统和软件配置文件更新:yum -y updateyum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp3、安装docker:3.1、安装必要的依赖:sudo yum install -y yum-utils \device-mapper-persistent-data \lvm23.2、设置docker仓库:sudo yum-config-
2021-11-06 14:46:17 608
原创 Nacos配置的自动刷新
public NacosConfigService(Properties properties) throws NacosException { String encodeTmp = properties.getProperty("encode"); if(StringUtils.isBlank(encodeTmp)) { this.encode = "UTF-8"; } else { this.encode = encodeTmp.trim();..
2021-03-25 21:16:20 1880
原创 Nacos配置文件的加载
SpringBoot启动时,初始化完成运行环境信息准备之后,会调用SpringApplication.prepareContext方法开始准备上下文,protected void applyInitializers(ConfigurableApplicationContext context) { //获取所有实现了ApplicationContextInitializer的类,主要看PropertySourceBootstrapConfiguration Iterator var2 .
2021-03-18 20:57:15 2414
原创 Sentinel的流控效果
Sentinel的流控效果有四种类型,都是TrafficShapingController的实现类,分别是DefaultController(默认策略,直接拒绝),WarmUpController(预热启动),RateLimiterController(排队等待),WarmUpRateLimiterController(预热排队等待)。DefaultController.canPasspublic boolean canPass(Node node, int acquireCount, b.
2020-12-25 21:55:38 617
原创 Hystrix熔断
首先查看EnableCircuitBreaker注解,通过Import注解导入了EnableCircuitBreakerImportSelector(SpringFactoryImportSelector的子类,实现了ImportSelector接口),当Spring容器启动时,会调用SpringFactoryImportSelector.selectImports方法将需要注册的Bean解析出来(当spring.cloud.circuit.breaker.enabled配置的值为false时会放弃解析
2020-11-29 21:39:49 201
原创 Feign代理类的生成过程
我们从下面这个注解进行切入,这个注解开启了FeignClient的解析过程@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})@Documented@Import({FeignClientsRegistrar.class})public @interface EnableFeignClients { String[] value() default {}; String[] basePackages()
2020-09-14 20:57:56 827
原创 Ribbon ILoadBalancer 负载均衡源码分析
在执行LoadBalancerInterceptor.intercept拦截器方法的时候,会调用LoadBalancerClient.execute方法,执行具体的请求逻辑,public <T> T execute(String serviceId, LoadBalancerRequest<T> request, Object hint) throws IOException { ILoadBalancer loadBalancer = this.getLoadBala
2020-08-14 08:27:11 398
原创 Ribbon改写请求uri的源码分析
进入RestTemplate的execute方法,其调用了自身的doExecute方法,在doExecute方法中通过createRequest方法创建了ClientHttpRequest对象,通过类名称,我们就可以知道这是一个发起http请求的封装类。那么在createRequest方法中RestTemplate做了哪些事情?@Nullablepublic <T> T execute(String url, HttpMethod method, @Nullable RequestCal
2020-08-01 22:58:36 453
原创 Ribbon均衡算法
Ribbon的负载均衡算法的类的集成关系如下其中:1、RetryRule: 在一个2配置时间段内当选择server不成功,则一直尝试使用subRule的方式选择一个可用的server2、RoundRobinRule: 默认轮询的方式3、WeightedResponseTimeRule: 根据响应时间来分配权重的方式,响应的越快,分配的值越大4、AvailabilityFilteringRule: 过滤掉那些因为一直连接失败的被标记为circuit tripped的后端server,.
2020-07-26 14:37:13 259
原创 ArrayList删除元素总结
ArrayList删除元素的简单总结在工作中经常会根据根据某个条件来对ArrayList做删除操作,以下来做个简单的总结:首先获取到了一个存放String类型的ArrayList实例,希望删除元素值为&quot;张&quot;的元素,运用了以下几种方法(错误的/正确的)1:如removeA所示,使用简单for循环遍历listA,若遍历出的元素值为&quot;张&quot;,则调用listA的remove方法,将其从list中删除...
2018-10-11 15:34:55 2805
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人