您现在的位置是:不矜细行网 > 龚秋霞

广东开学第一课(春季)启幕

不矜细行网2025-03-05 06:17:12【龚秋霞】8人已围观

简介曩昔一年,广东面临外部压力加大、广东内部应战增多的杂乱严峻局势,广东经济克难前行,全年经济运转前高、中低、后扬,交出了一份令人鼓舞的成绩单——全年区域出产总值将迈上14万亿元新台阶,接连36年居全国首位。

曩昔一年,广东面临外部压力加大、广东内部应战增多的杂乱严峻局势,广东经济克难前行,全年经济运转前高、中低、后扬,交出了一份令人鼓舞的成绩单——全年区域出产总值将迈上14万亿元新台阶,接连36年居全国首位。

实践上是署理到CacheInterceptor上面,开学课春CacheInterceptor中间商内部再调用target方针类,开学课春便是这么简略~CompositeComponentDefinitioncompositeDef=newCompositeComponentDefinition(element.getTagName(),eleSource);compositeDef.addNestedComponent(newBeanComponentDefinition(sourceDef,sourceName));compositeDef.addNestedComponent(newBeanComponentDefinition(interceptorDef,interceptorName));compositeDef.addNestedComponent(newBeanComponentDefinition(advisorDef,org.springframework.cache.config.internalCacheAdvisor));parserContext.registerComponent(compositeDef);三.缓存key生成原理但是key是怎么发生的?经过上问的论述,就知道要找这个中间商CacheInterceptor,上代码。publicinterfaceCache{StringgetName();ObjectgetNativeCache();Cache.ValueWrapperget(Objectvar1);voidput(Objectvar1,Objectvar2);voidevict(Objectvar1);voidclear();publicinterfaceValueWrapper{Objectget();}}装备输出完了,季启开端切入正题。

广东开学第一课(春季)启幕

publicBeanDefinitionparse(Elementelement,ParserContextparserContext){Stringmode=element.getAttribute(mode);if(aspectj.equals(mode)){this.registerCacheAspect(element,parserContext);}else{AnnotationDrivenCacheBeanDefinitionParser.AopAutoProxyConfigurer.configureAutoProxyCreator(element,parserContext);}returnnull;}往下走会抵达configureAutoProxyCreator办法,广东configureAutoProxyCreator办法的作用是装备主动署理创立器。publicinterfaceMyCacheKeyGenerator{/***生成key**/StringgenerateKey(Methodmethod,Object[]args,Objecttarget,Stringkey);}详细完成,其间wrapper是一个包装类,开学课春仅仅一个搬运工。//代码中cache-manager表明需求依靠一个缓存管理器,季启它的作用是供给一种机制来缓存数据,以便在后续的拜访中能够更快地获取数据。

广东开学第一课(春季)启幕

privatestaticBeanDefinitionregisterOrEscalateApcAsRequired(Classcls,BeanDefinitionRegistryregistry,Objectsource){Assert.notNull(registry,BeanDefinitionRegistrymustnotbenull);if(registry.containsBeanDefinition(org.springframework.aop.config.internalAutoProxyCreator)){BeanDefinitionapcDefinition=registry.getBeanDefinition(org.springframework.aop.config.internalAutoProxyCreator);if(!cls.getName().equals(apcDefinition.getBeanClassName())){intcurrentPriority=findPriorityForClass(apcDefinition.getBeanClassName());intrequiredPriority=findPriorityForClass(cls);if(currentPrioritynewWrapper());getMykeyGenerator(method,key,wrapper);return((MyCacheKeyGenerator)wrapper.getData()).generate(args);}privatevoidgetMykeyGenerator(Methodmethod,Stringkey,Wrapperwrapper){if(wrapper.getData()!=null){return;}synchronized(wrapper){if(wrapper.getData()==null){MyCacheKeyGeneratorkeyGenerator=MyCacheKeyGenerator.initMyKeyGenerator(method,key);wrapper.setData(keyGenerator);}}}}那么咱们首要依据key获取表达式的调集,广东假如是反射则会生成DynamicExpression表达式,广东连接符会生成静态的StaticExpression表达式。publicstaticMyCacheKeyGeneratorinitMyKeyGenerator(Methodmethod,Stringkey){SetimportHashSet=newHashSet();//依据key中的装备的办法生成表达式列表ListexpressionList=newLinkedList();generateExpression(key,expressionList);for(Expressionexpression:expressionList){if(expressioninstanceofDynamicExpression){StringexpressionStr=expression.execute();//判别格局合法性String[]items=expressionStr.split(.);StringindexValue=items[0].replace(args,);intindex=Integer.parseInt(indexValue);Classclx=method.getParameterTypes()[index];importHashSet.add(clx);//获取对应特点的办法StringfiledName=items[1];StringkeyValue=Character.toUpperCase(filedName.charAt(0))+filedName.substring(1);try{keyValue=get+keyValue;MethodfelidMethod=clx.getMethod(keyValue);expression.setExpression(String.format(String.valueOf(((%s)args[%s]).%s()),clx.getName(),index,felidMethod.getName()));}catch(NoSuchMethodExceptione){}}}//界说接口类型ClassNameinterfaceName=ClassName.get(com.xxx.xxx,MyKeyGenerator);//界说类名和包名ClassNameclassName=ClassName.get(com.xxx.xxx,DyMyKeyGeneratorImpl+classIndex.incrementAndGet());//创立类结构器TypeSpec.BuilderclassBuilder=TypeSpec.classBuilder(className.simpleName()).addModifiers(Modifier.PUBLIC).addSuperinterface(interfaceName);StringBuilderstringBuilder=newStringBuilder(stringBuilder);for(Expressionexpression:expressionList){stringBuilder.append(.append().append(expression.execute()).append());}MethodSpecgenerateMethod=MethodSpec.methodBuilder(generate).addModifiers(Modifier.PUBLIC).returns(String.class).addParameter(Object[].class,args).addStatement($TstringBuilder=newStringBuilder(),StringBuilder.class).addStatement(stringBuilder.toString()).addStatement(return$S,stringBuilder.toString();).build();classBuilder.addMethod(generateMethod);JavaFilejavaFile=JavaFile.builder(className.packageName(),classBuilder.build()).build();StringBuildersb=newStringBuilder();try{javaFile.writeTo(sb);}catch(IOExceptione){logger.error(写入StringBuilder失利,e);}try{System.out.println(sb.toString());Mapresults=compiler.compile(className+.java,sb.toString());Classclazz=compiler.loadClass(com.xxx.xxx.+className,results);return(KeyGenerator)clazz.newInstance();}catch(Exceptione){logger.error(编译失利,开学课春编译内容:开学课春{},sb.toString(),e);thrownewRuntimeException(内存class编译失利);}}publicstaticvoidgenerateExpression(Stringkey,ListexpressionList){if(StringUtils.isEmpty(key)){return;}intindex=key.indexOf(paramsPrefix);if(index。

广东开学第一课(春季)启幕

季启增加特点装备后会调用registerComponentIfNecessary从头注册internalAutoProxyCreator组件。

spring容器发动时分会解析annotation-driven标签,广东详细的完成在CacheNamespaceHandler中。从收益率同比改变来看,开学课春恒安规范养老信天翁·启航专属商业养老稳妥、开学课春新华养老盈佳人生专属商业养老稳妥及和平岁岁金生专属商业养老稳妥稳健型账户的结算利率同比有所上升

尹锡悦律师随后表明,季启宪法法院驳回特定法官逃避请求,不符合知识,对此感到遗憾。在2024年12月3日电视讲话宣告紧迫戒严时,广东尹锡悦集结戎行闯入国会,企图封闭国会并涉嫌阻止国会议员进入国会经过决议案免除戒严。

法庭争辩将聚集哪些争论点?在法庭争辩中,开学课春弹劾案建议方韩国国会以及被请求人尹锡悦一方将会集就以下几个首要争论点打开争辩。无独有偶,季启在尹锡悦官邸邻近继续举办支援聚会的尹锡悦支持者,也一向手举标语责备在野党推举作弊。

很赞哦!(23)

不矜细行网的名片

职业:程序员,设计师

现居:浙江温州瓯海区

工作室:小组

Email:282255935@131.com