1.起由
2.概念
InitializingBean接口為bean提供了初始化方法的方式循集,它只包括afterPropertiesSet方法阱驾,凡是繼承該接口的類,在初始化bean的時候都會執(zhí)行該方法昔榴。
啟動服務(wù)后 spring 會自動去 在初始化bean的時候都會執(zhí)行該方法逞怨。
所以啟動 oms服務(wù) 至此問題解決
4.自己知道怎么配置動態(tài)路由
啟動 oms服務(wù)
先 log.warn("接收到Redis重新加載路由事件");
再 初始化路由 保存到redis中 通知網(wǎng)關(guān)重置路由
geteway 接收到JVM 重新加載路由事件
至此流程完成 整個路由配置
動態(tài)路由則在
https://blog.csdn.net/lmchhh/article/details/120792267
項目 中的注解
@Inherited
接口用上個@Inherited修飾的注解,其實現(xiàn)類不會繼承這個注解
父類的方法用了@Inherited修飾的注解耍鬓,子類也不會繼承這個注解
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE)
@ConditionalOnWebApplication 條件是:如果當(dāng)前應(yīng)用是web應(yīng)用時,則該配置類生效阔籽。
@RequiredArgsConstructor
@RequiredArgsConstructor注解可以代替@Autowired注解
@Async
@Async是Spring Boot里面的[異步調(diào)用]
@Order
方法被優(yōu)先執(zhí)行
@EventListener({ WebServerInitializedEvent.class })
監(jiān)聽事件
@TransactionalEventListener({ DynamicRouteInitEvent.class })
@TransactionalEventListener注解原理也是一致的,只是該監(jiān)聽者可選擇在事務(wù)完成后牲蜀,才被執(zhí)行笆制,事務(wù)執(zhí)行失敗就不會執(zhí)行。
https://zhuanlan.zhihu.com/p/555723916?utm_id=0
2.項目中自己沒用過 的方法 和類
1)RedisMessageListenerContainer
2)redisTemplate.convertAndSend(CacheConstant.ROUTE_JVM_RELOAD_TOPIC, "路由信息,網(wǎng)關(guān)緩存更新");
3)/**
* redis 監(jiān)聽配置,監(jiān)聽 oms_redis_route_reload_topic,重新加載Redis
* @throws Exception
*/
@Override
public void afterPropertiesSet() throws Exception {
4) redisTemplate.setKeySerializer(new StringRedisSerializer());
5)
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(redisConnectionFactory);
container.addMessageListener((message, bytes) -> {
log.warn("接收到JVM 重新加載路由事件");
RouteCacheHolder.removeRouteList();
// 發(fā)送刷新路由事件
SpringContextHolder.publishEvent(new RefreshRoutesEvent(this));
}, new ChannelTopic(CacheConstant.ROUTE_JVM_RELOAD_TOPIC));
類似客戶端 通知中心的功能 注冊 接收