SpringBoot自动装配AutoConfigure
2016-09-02 09:34:15 0 举报
SpringBoot自动装配AutoConfigure是Spring框架提供的一种机制,它可以根据项目中的依赖关系和配置信息,自动完成Bean的创建和注入。通过在项目中引入相应的依赖和注解,可以使得开发人员无需手动编写大量的配置代码,从而提高了开发效率。同时,AutoConfigure还具有很好的扩展性,用户可以根据需要自定义自动装配规则,以满足特定的业务需求。总之,SpringBoot自动装配AutoConfigure为开发人员提供了一种简洁、高效的开发方式,使得项目结构更加清晰,降低了维护成本。
作者其他创作
大纲/内容
{ sentinels: \"172.28.8.20:6387 172.28.8.20:6388 172.28.8.20:6389\
false
zookeeper集群
重要属性1: beanDefinitionMap
堆内存
循环遍历 自动装配候选的配置类
什么是IfNecessary: 如果存在合格的增强器(Advisors)
loadCaches()
参与判断的数据源.1、自动装配候选的配置类。2、自动装配元数据
老年代
重要属性2: singletonObjects
Survivor1 区(10%)
调用processImports处理每一个autoConfiguration。
需要 RedisConnectionFactory connectionFactory
Spring IOC
initializeCaches()
........
从 @EnableCaching 开始
新生代
进行OnWebApplicationCondition检查机制过滤
RedisCacheManager 源码决定读哪一个配置?
进行OnBeanCondition检查机制过滤
Survivor区(20%)
非堆内存(Metaspace)
由 @Import(CachingConfigurationSelector.class) 触发.向IOC容器注入了 InfrastructureAdvisorAutoProxyCreator 类.将 ProxyCachingConfiguration 当成 Configuration 类进行解析
Survivor0 区(10%)
根据需求进行选择
Loom服务端
处理结果
需要 RedisSentinelConfiguration
进行OnClassCondition检查机制过滤
Eden 区(80%)
折800多模块创建
如果我们要新建一个项目
循环遍历 剩下的满足条件的autoConfiguration
if (自动装配候选类 != null) { key = 自动装配候选类.ConditionalOnWebApplication value = 自动装配元数据[key] != null ? 自动装配元数据[key] : null if(value == SERVLET) { return Class.forName(\"org.springframework.web.context.support.GenericWebApplicationContext\") } if(value == REACTIVE) { return Class.forName(\"org.springframework.web.reactive.HandlerResult\
折800单模块创建
需要 JedisPoolConfig
<!-- id是此应用的应用名称--><loom:application id=\"zhuanchang-thrift-serv-app\" owner=\"wangchangwei\
每一个注解都会对应一个Cache对象
Loom客户端
wrapIfNecessary
private JedisPoolConfig jedisPoolConfig(int total) { JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(total); poolConfig.setMinIdle(20); poolConfig.setMaxIdle(80); poolConfig.setMinEvictableIdleTimeMillis(-1); poolConfig.setSoftMinEvictableIdleTimeMillis(3600000); poolConfig.setTimeBetweenEvictionRunsMillis(1800000); poolConfig.setMaxWaitMillis(3000); poolConfig.setBlockWhenExhausted(true); poolConfig.setTestWhileIdle(true); return poolConfig;}
构建RedisCacheManagerpublic static RedisCacheManagerBuilder builder(RedisConnectionFactory connectionFactory)
通过Maven archetype选择
http://172.28.8.20:8585/cache/client/redis/sentinel/10020.json?clientVersion=1.0-SNAPSHOT
注入实现了接口 PointcutAdvisor 的增强器类 -> BeanFactoryCacheOperationSourceAdvisor注入实现了接口 MethodInterceptor 的方法拦截 -> CacheInterceptorBeanFactoryCacheOperationSourceAdvisor .pointcut -> new CacheOperationSourcePointcut() .advise -> CacheInterceptor .cacheOperationSource -> new AnnotationCacheOperationSource()
0 条评论
下一页