博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring cloud 技术文档汇总(收集)
阅读量:4043 次
发布时间:2019-05-24

本文共 4469 字,大约阅读时间需要 14 分钟。

好的文章进行收集整理:

1.SpringApplication.run做了哪些事

2.SpringBoot @ConditionalOnBean、@ConditionalOnMissingBean

@ConditionalOnBean(Abc.class) Abc.class  已注入的Bean存在时处理

@ConditionalOnMissingBean(Abc.class)  

@Bean@ConditionalOnMissingBeanpublic NacosDiscoveryProperties nacosProperties() {   return new NacosDiscoveryProperties();}

NacosDiscoveryProperties不存在时,进行初始化NacosDiscoveryProperties

@ConditionalOnProperty是指在application.yml里配置的属性是否为true,其他的几个都是对class的判断。

3.Java中Class标签@PostConstruct和@PreDestroy,表示执行顺序,服务器仅加载一次

4.Spring cloud 网络配置相关,InetUtils、InetUtilsProperties和UtilAutoConfiguration提供了网络配置相关的功能。

          网卡选择:

          Spring Cloud Netflix Eureka: 多网卡环境下Eureka服务注册IP选择问题

          

          Spring Cloud Eureka 多网卡配置最终版

           

5.@CallerSensitive

使用CallerSensitive后,getCallerClass不再用固定深度去寻找actual caller(“我”),而是把所有跟反射相关的接口方法都标注上CallerSensitive,搜索时凡看到该注解都直接跳过,这样就有效解决了前面黑客通过构造双重反射来提升权限的问题

6.EndPoint  主要用于暴漏SpringMvc内部运行的信息

Spring boot actuator监控端点集成,可以集成监控+数据暴漏+grafana图表软件,进行图形化展示

源码解析:

端点小总结:

Endpoint也是通过spring.factories实现扩展功能,注入了对应的Bean来实现应用监控的功能

7.@Bean 注册对象时,方法参数是取Spring 容器中的具体声明类的注册Bean。如果声明类注册的对象有多个,则需要参数名一致,否则会报不确定选择哪个Bean。

@Bean	@ConditionalOnBean(AutoServiceRegistrationProperties.class)	public NacosAutoServiceRegistration nacosAutoServiceRegistration(			NacosServiceRegistry registry,			AutoServiceRegistrationProperties autoServiceRegistrationProperties,			NacosRegistration registration) {		return new NacosAutoServiceRegistration(registry,				autoServiceRegistrationProperties, registration);	}

8.Spring autoConfigure  通过标签进行自动化配置,带条件的初始化,以及配置先后顺序,具体Bean没有了后进行自动再注册(防止对象的销毁,跟对象的初始化进行处理)

具体标签说明:

@Configuration@EnableConfigurationProperties@ConditionalOnNacosDiscoveryEnabled@ConditionalOnProperty(value = "spring.cloud.service-registry.auto-registration.enabled", matchIfMissing = true)@AutoConfigureAfter({ AutoServiceRegistrationConfiguration.class,		AutoServiceRegistrationAutoConfiguration.class })public class NacosDiscoveryAutoConfiguration {	@Bean	public NacosServiceRegistry nacosServiceRegistry(			NacosDiscoveryProperties nacosDiscoveryProperties) {		return new NacosServiceRegistry(nacosDiscoveryProperties);	}	@Bean	@ConditionalOnBean(AutoServiceRegistrationProperties.class)	public NacosRegistration nacosRegistration(			NacosDiscoveryProperties nacosDiscoveryProperties,			ApplicationContext context) {		return new NacosRegistration(nacosDiscoveryProperties, context);	}	@Bean	@ConditionalOnBean(AutoServiceRegistrationProperties.class)	public NacosAutoServiceRegistration nacosAutoServiceRegistration(			NacosServiceRegistry registry,			AutoServiceRegistrationProperties autoServiceRegistrationProperties,			NacosRegistration registration) {		return new NacosAutoServiceRegistration(registry,				autoServiceRegistrationProperties, registration);	}}

9.SpringBoot使用ApplicationEvent&Listener完成业务解耦

10.Spring框架开发之SmartLifecycle接口

Spring加载和初始化所有bean后,接着执行一些任务或者启动需要的异步服务,当Spring容器加载所有bean并完成初始化之后,会接着回调实现该接口的类中对应的方法(start()方法)。 

11.nacos discovery  流程原理

12.nacos 源码

13.Spring boot 配置资源类 PropertySourceLocator  远程config读取主要类

例如nacos的配置中心:

@Order(0)public class NacosPropertySourceLocator implements PropertySourceLocator

14.Spring boot  FailureAnalyzer  一种很好的方式在启动时拦截异常并将其转换为易读的消息,并将其包含在FailureAnalysis中。

public class NacosConnectionFailureAnalyzer      extends AbstractFailureAnalyzer
{ @Override protected FailureAnalysis analyze(Throwable rootFailure, NacosConnectionFailureException cause) { return new FailureAnalysis("Application failed to connect to Nacos server", "check your nacos server config", cause); }}

同时META-INF/spring.factories中添加

org.springframework.boot.diagnostics.FailureAnalyzer=\org.springframework.cloud.alibaba.nacos.diagnostics.analyzer.NacosConnectionFailureAnalyzer

因为SpringApplication.run执行时初始化了FailureAnalyzers

ApplicationArguments applicationArguments = new DefaultApplicationArguments(      args);ConfigurableEnvironment environment = prepareEnvironment(listeners,      applicationArguments);Banner printedBanner = printBanner(environment);context = createApplicationContext();analyzers = new FailureAnalyzers(context);prepareContext(context, environment, listeners, applicationArguments,      printedBanner);refreshContext(context);afterRefresh(context, applicationArguments);listeners.finished(context, null);stopWatch.stop();if (this.logStartupInfo) {   new StartupInfoLogger(this.mainApplicationClass)         .logStarted(getApplicationLog(), stopWatch);}return context;

15.AbstractHealthIndicator  

Spring 内部healthEndPoint 解析

 

 

转载地址:http://igadi.baihongyu.com/

你可能感兴趣的文章
Linux系统信息查看
查看>>
用find命令查找最近修改过的文件
查看>>
Android2.1消息应用(Messaging)源码学习笔记
查看>>
Android之TelephonyManager类的方法详解
查看>>
android raw读取超过1M文件的方法
查看>>
ubuntu下SVN服务器安装配置
查看>>
MPMoviePlayerViewController和MPMoviePlayerController的使用
查看>>
CocoaPods实践之制作篇
查看>>
[Mac]Mac 操作系统 常见技巧
查看>>
苹果Swift编程语言入门教程【中文版】
查看>>
捕鱼忍者(ninja fishing)之游戏指南+游戏攻略+游戏体验
查看>>
iphone开发基础之objective-c学习
查看>>
iphone开发之SDK研究(待续)
查看>>
计算机网络复习要点
查看>>
Variable property attributes or Modifiers in iOS
查看>>
NSNotificationCenter 用法总结
查看>>
C primer plus 基础总结(一)
查看>>
剑指offer算法题分析与整理(一)
查看>>
剑指offer算法题分析与整理(三)
查看>>
Ubuntu 13.10使用fcitx输入法
查看>>