Spring扩展点在微服务组件中的应用

1. Spring扩展点

  • BeanFactoryPostProcessor
    • BeanDefinitionRegistryPostProcessor
  • BeanPostProcessor
    • InstantiationAwareBeanPostProcessor
    • AbstractAutoProxyCreator
  • @Import
    • ImportBeanDefinitionRegistrar
    • ImportSelector
  • Aware
  • InitializingBean
  • FactoryBean
  • SmartInitializingSingleton
  • ApplicationListener
  • Lifecycle
    • SmartLifecycle
    • LifecycleProcessor
  • HandlerInterceptor
  • MethodInterceptor

Bean的生命周期 | ProcessOn免费在线作图,在线流程图,在线思维导图 |

2. Spring扩展点应用场景

2.1 整合Nacos

思考: 为什么整合Nacos注册中心后,服务启动就会自动注册,Nacos是如何实现自动服务注册的?

0

NacosAutoServiceRegistration

# 对ApplicationListener的扩展 AbstractAutoServiceRegistration#onApplicationEvent # 服务注册 》NacosServiceRegistry#register

0

Nacos1.1.4注册中心源码分析 | ProcessOn免费在线作图,在线流程图,在线思维导图 |

NacosWatch:

#对SmartLifecycle的扩展 NacosWatch#start #订阅服务接收实例更改的事件 》NamingService#subscribe

0

扩展: Eureka Server端上下文的初始化是在SmartLifecycle#start中实现的

EurekaServerInitializerConfiguration

0

2.2 整合Feign

思考:为什么Feign接口可以通过@Autowired直接注入使用?Feign接口是如何交给Spring管理的?

@FeignClient(value = "mall-order",path = "/order")
public interface OrderFeignService {

    @RequestMapping("/findOrderByUserId/{userId}")
    R findOrderByUserId(@PathVariable("userId") Integer userId);
}

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    OrderFeignService orderFeignService;

    @RequestMapping(value = "/findOrderByUserId/{id}")
    public R  findOrderByUserId(@PathVariable("id") Integer id) {
        //feign调用
        R result = orderFeignService.findOrderByUserId(id);
        return result;
    }
}

FeignClientsRegistrar

0

FeignClientFactorybean

0

Feign源码分析 | ProcessOn免费在线作图,在线流程图,在线思维导图 |

2.3 整合Ribbon

思考:为什么@Bean修饰的RestTemplate加上@LoadBalanced就能实现负载均衡功能?

@Bean
@LoadBalanced
public RestTemplate restTemplate() {
    return new RestTemplate();
}

LoadBalancerAutoConfiguration

对SmartInitializingSingleton的扩展,为所有用@LaodBalanced修饰的restTemplate(利用了@Qualifier)绑定实现了负载均衡逻辑的拦截器LoadBalancerInterceptor

0

LoadBalancerInterceptor

0

Ribbon源码分析 | ProcessOn免费在线作图,在线流程图,在线思维导图 |

2.4 整合sentinel

AbstractSentinelInterceptor

# Webmvc接口资源保护入口 AbstractSentinelInterceptor#preHandle

0

SentinelDataSourceHandler

#Sentinel持久化读数据源设计,利用了SmartInitializingSingleton扩展点 SentinelDataSourceHandler#afterSingletonsInstantiated # 注册一个FactoryBean类型的数据源 》SentinelDataSourceHandler#registerBean 》》NacosDataSourceFactoryBean#getObject # 利用FactoryBean获取到读数据源 》》new NacosDataSource(properties, groupId, dataId, converter)

0

NacosDataSourceFactoryBean

0

2.5 整合seata

GlobalTransactionScanner

0

GlobalTransactionalInterceptor

0

Seata源码分析 | ProcessOn免费在线作图,在线流程图,在线思维导图 |

3. Nacos配置中心源码分析

Nacos配置中心源码分析 | ProcessOn免费在线作图,在线流程图,在线思维导图 |

文档:22 Spring扩展点在微服务组件中的应用....

链接:http://note.youdao.com/noteshare?id=83d3b8e4598a2e071ae653de66832ae0&sub=8076A124D7C146B491FBDA9F9C78039E

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值