当前位置: 首页 > news >正文

网站注册设计手机网易网

网站注册设计,手机网易网,做网站的作品思路及步骤,网站建设初步规划方案源码分析 /**** author Andy Wilkinson* author Madhura Bhave* author Tyler Van Gorder* author Phillip Webb* since 2.2.0* see LazyInitializationExcludeFilter** 主要用于延迟初始化 Bean 的配置。它通过修改 BeanFactory 的配置来确保某些 Bean 在实际需要时才进行初始…

源码分析

/**** @author Andy Wilkinson* @author Madhura Bhave* @author Tyler Van Gorder* @author Phillip Webb* @since 2.2.0* @see LazyInitializationExcludeFilter** 主要用于延迟初始化 Bean 的配置。它通过修改 BeanFactory 的配置来确保某些 Bean 在实际需要时才进行初始化,而不是在应用启动时就全部初始化。这有助于提高应用的启动速度和资源利用率。*/
public final class LazyInitializationBeanFactoryPostProcessor implements BeanFactoryPostProcessor, Ordered {/*** 在BeanFactory初始化后对bean进行后处理* 主要用于处理延迟初始化相关的逻辑** @param beanFactory ConfigurableListableBeanFactory类型的参数,代表BeanFactory* @throws BeansException 如果处理过程中遇到错误,则抛出此异常*/@Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {// Take care not to force the eager init of factory beans when getting filters//获取LazyInitializationExcludeFilter类型的beanCollection<LazyInitializationExcludeFilter> filters = beanFactory.getBeansOfType(LazyInitializationExcludeFilter.class, false, false).values();//遍历容器中的所有bean定义for (String beanName : beanFactory.getBeanDefinitionNames()) {//根据beanName获取bean的定义BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);//检查bean定义是否为AbstractBeanDefinition类型if (beanDefinition instanceof AbstractBeanDefinition) {//如果是,则进行延迟初始化处理postProcess(beanFactory, filters, beanName, (AbstractBeanDefinition) beanDefinition);}}}/*** 根据条件更新bean的懒初始化状态** @param beanFactory Bean工厂,用于获取bean的相关信息* @param filters 排除懒初始化的过滤器集合* @param beanName 当前bean的名称* @param beanDefinition 当前bean的定义,包含懒初始化状态*/private void postProcess(ConfigurableListableBeanFactory beanFactory,Collection<LazyInitializationExcludeFilter> filters, String beanName,AbstractBeanDefinition beanDefinition) {// 如果bean的懒初始化状态已明确,无需处理Boolean lazyInit = beanDefinition.getLazyInit();if (lazyInit != null) {return;}// 获取bean的类型Class<?> beanType = getBeanType(beanFactory, beanName);//如果该bean不再filters列表中,则LazyInit设置为trueif (!isExcluded(filters, beanName, beanDefinition, beanType)) {//给这个bean设置延迟初始化beanDefinition.setLazyInit(true);}}private Class<?> getBeanType(ConfigurableListableBeanFactory beanFactory, String beanName) {try {return beanFactory.getType(beanName, false);}catch (NoSuchBeanDefinitionException ex) {return null;}}/*** 判断指定的bean是否被排除在懒初始化之外** @param filters 一个包含多个排除过滤器的集合,用于判断bean是否应该被排除* @param beanName bean的名称,用于在过滤时进行标识* @param beanDefinition bean的定义信息,包含了bean的元数据* @param beanType bean的类型,可能为null,用于类型级别的过滤* @return 如果bean被至少一个过滤器认定为需要排除,则返回true;否则返回false*/private boolean isExcluded(Collection<LazyInitializationExcludeFilter> filters, String beanName,AbstractBeanDefinition beanDefinition, Class<?> beanType) {// 如果bean类型不为null,遍历所有过滤器以判断bean是否应被排除if (beanType != null) {for (LazyInitializationExcludeFilter filter : filters) {// 如果当前过滤器认为bean应被排除,则直接返回trueif (filter.isExcluded(beanName, beanDefinition, beanType)) {return true;}}}// 如果没有过滤器认为bean应被排除,则返回falsereturn false;}@Overridepublic int getOrder() {return Ordered.HIGHEST_PRECEDENCE;}}

测试案例

class LazyInitializationExcludeFilterTests {@Testvoid forBeanTypesMatchesTypes() {// 创建一个LazyInitializationExcludeFilter,排除CharSequence和Number类型的beanLazyInitializationExcludeFilter filter = LazyInitializationExcludeFilter.forBeanTypes(CharSequence.class,Number.class);// 定义一个测试用的bean名称String beanName = "test";// 模拟一个BeanDefinition对象BeanDefinition beanDefinition = mock(BeanDefinition.class);// 验证filter是否正确排除了CharSequence类型System.out.println("验证filter是否正确排除了CharSequence类型:"+filter.isExcluded(beanName, beanDefinition, CharSequence.class));// 验证filter是否正确排除了String类型(CharSequence的子类型)System.out.println("验证filter是否正确排除了String类型(CharSequence的子类型):"+filter.isExcluded(beanName, beanDefinition, String.class));// 验证filter是否正确排除了StringBuilder类型(CharSequence的子类型)System.out.println("验证filter是否正确排除了StringBuilder类型(CharSequence的子类型):"+filter.isExcluded(beanName, beanDefinition, StringBuilder.class));// 验证filter是否正确排除了Number类型System.out.println("验证filter是否正确排除了Number类型:"+filter.isExcluded(beanName, beanDefinition, Number.class));// 验证filter是否正确排除了Long类型(Number的子类型)System.out.println("验证filter是否正确排除了Long类型(Number的子类型):"+filter.isExcluded(beanName, beanDefinition, Long.class));// 验证filter是否正确不排除Boolean类型(非Number类型)System.out.println("验证filter是否正确不排除Boolean类型(非Number类型):"+filter.isExcluded(beanName, beanDefinition, Boolean.class));}}

测试结果

验证filter是否正确排除了CharSequence类型:true
验证filter是否正确排除了String类型(CharSequence的子类型):true
验证filter是否正确排除了StringBuilder类型(CharSequence的子类型):true
验证filter是否正确排除了Number类型:true
验证filter是否正确排除了Long类型(Number的子类型):true
验证filter是否正确不排除Boolean类型(非Number类型):false
http://www.yayakq.cn/news/626260/

相关文章:

  • 做网站建设需要多少钱广西网站建设哪里好
  • 成都谁做捕鱼网站老版51个人空间找照片
  • 镇江市网站wordpress读书笔记插件
  • 常德网站优化推广电子信息工程移动互联网 学什么
  • 坦克大战网站开发课程设计报告网站备案步骤
  • 软件网站怎么做seo代码优化步骤
  • 信阳网站建设哪个好快速网站排名汉狮公司
  • 微信网站对接上海传媒公司招聘艺人
  • 建网站兴田德润php网站源代码
  • 如何建设网站公司网页设计的合适尺寸是多少
  • 12建网站门户网站的基本特征多选题
  • 深圳网站设计报价天津做一个简单的网站
  • 自己做网站处理图片用什么软件百度指数批量查询工具
  • 知名的电子商务网站如何登录中国建设银行网站
  • 成都网站定制中心收费wordpress主题排行
  • 网站建设文化信息网站开发人才储备
  • 做羞羞事免费网站seo案例分享
  • 企业网站建设心得免费文件外链网站
  • 郑州高端网站建设哪家好广东十大网站建设
  • 网站建设开发方式包括查询网站这么做
  • 怎么能创建自己的网站注册微信公众号流程
  • 谷歌网站质量指南智能网站价格
  • 创业过程中网站建设wordpress侧边栏目录菜单
  • 求个网站你明白的网页设计与制作心得体会800字
  • 建网站空间可以不买服务公司英文
  • 公司做网站是管理费用建设厅考试成绩查询
  • 网站建设 百度推广网站蓝色配色
  • 西宁微网站建设多少钱seo外包模板
  • 良精企业网站管理系统源码 后台不能编辑产品网站英文版怎么做
  • 如何做网站嵌入腾讯地图自助建站推广