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

全国企业信用信息查询网站泸州市网站建设

全国企业信用信息查询网站,泸州市网站建设,黄页 网站模板,wordpress阿里整理了一下Spring的核心概念BeanDefinitionBeanDefinition表示Bean定义#xff0c;BeanDefinition中存在很多属性用来描述一个Bean的特点。比如#xff1a;class#xff0c;表示Bean类型scope#xff0c;表示Bean作用域#xff0c;单例或原型等lazyInit#xff1a;表示Be…整理了一下Spring的核心概念BeanDefinitionBeanDefinition表示Bean定义BeanDefinition中存在很多属性用来描述一个Bean的特点。比如class表示Bean类型scope表示Bean作用域单例或原型等lazyInit表示Bean是否是懒加载initMethodName表示Bean初始化时要执行的方法destroyMethodName表示Bean销毁时要执行的方法还有很多…在Spring中我们经常会通过以下几种方式来定义BeanBeanComponent(Service,Controller)这些我们可以称之申明式定义Bean。我们还可以编程式定义Bean那就是直接通过BeanDefinition比如 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);// 生成一个BeanDefinition对象并设置beanClass为User.class并注册到ApplicationContext中 AbstractBeanDefinition beanDefinition BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition(); beanDefinition.setBeanClass(User.class); context.registerBeanDefinition(user, beanDefinition);System.out.println(context.getBean(user)); 我们还可以通过BeanDefinition设置一个Bean的其他属性 beanDefinition.setScope(prototype); // 设置作用域 beanDefinition.setInitMethodName(init); // 设置初始化方法 beanDefinition.setLazyInit(true); // 设置懒加载 和申明式事务、编程式事务类似通过BeanComponent等申明式方式所定义的Bean最终都会被Spring解析为对应的BeanDefinition对象并放入Spring容器中。 BeanDefinitionReader 接下来我们来介绍几种在Spring源码中所提供的BeanDefinition读取器BeanDefinitionReader这些BeanDefinitionReader在我们使用Spring时用得少但在Spring源码中用得多相当于Spring源码的基础设施。AnnotatedBeanDefinitionReader可以直接把某个类转换为BeanDefinition并且会解析该类上的注解比如 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);AnnotatedBeanDefinitionReader annotatedBeanDefinitionReader new AnnotatedBeanDefinitionReader(context);// 将User.class解析为BeanDefinition annotatedBeanDefinitionReader.register(User.class);System.out.println(context.getBean(user)); 注意它能解析的注解是ConditionalScope、Lazy、Primary、DependsOn、Role、Description XmlBeanDefinitionReader 可以解析标签 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);XmlBeanDefinitionReader xmlBeanDefinitionReader new XmlBeanDefinitionReader(context); int i xmlBeanDefinitionReader.loadBeanDefinitions(spring.xml);System.out.println(context.getBean(user)); ClassPathBeanDefinitionScannerClassPathBeanDefinitionScanner是扫描器但是它的作用和BeanDefinitionReader类似它可以进行扫描扫描某个包路径对扫描到的类进行解析比如扫描到的类上如果存在Component注解那么就会把这个类解析为一个BeanDefinition比如 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(); context.refresh();ClassPathBeanDefinitionScanner scanner new ClassPathBeanDefinitionScanner(context); scanner.scan(com.bethmeta);System.out.println(context.getBean(userService)); BeanFactory BeanFactory表示Bean工厂所以很明显BeanFactory会负责创建Bean并且提供获取Bean的API。 而ApplicationContext是BeanFactory的一种在Spring源码中是这么定义的 public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,MessageSource, ApplicationEventPublisher, ResourcePatternResolver {... } 作者约一夏萌宠屋 链接https://www.zhihu.com/question/438612354/answer/2663530822 来源知乎 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。 首先在Java中接口是可以多继承的我们发现ApplicationContext继承了ListableBeanFactory和HierarchicalBeanFactory而ListableBeanFactory和HierarchicalBeanFactory都继承至BeanFactory所以我们可以认为ApplicationContext继承了BeanFactory相当于苹果继承水果宝马继承汽车一样ApplicationContext也是BeanFactory的一种拥有BeanFactory支持的所有功能不过ApplicationContext比BeanFactory更加强大ApplicationContext还基础了其他接口也就表示ApplicationContext还拥有其他功能比如MessageSource表示国际化ApplicationEventPublisher表示事件发布EnvironmentCapable表示获取环境变量等等关于ApplicationContext后面再详细讨论。在Spring的源码实现中当我们new一个ApplicationContext时其底层会new一个BeanFactory出来当使用ApplicationContext的某些方法时比如getBean()底层调用的是BeanFactory的getBean()方法。在Spring源码中BeanFactory接口存在一个非常重要的实现类是**DefaultListableBeanFactory也是非常核心的。**具体重要性随着后续课程会感受更深。所以我们可以直接来使用DefaultListableBeanFactory而不用使用ApplicationContext的某个实现类比如 DefaultListableBeanFactory beanFactory new DefaultListableBeanFactory();AbstractBeanDefinition beanDefinition BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition(); beanDefinition.setBeanClass(User.class);beanFactory.registerBeanDefinition(user, beanDefinition);System.out.println(beanFactory.getBean(user)); DefaultListableBeanFactory是非常强大的支持很多功能可以通过查看DefaultListableBeanFactory的类继承实现结构来看 作者约一夏萌宠屋 链接https://www.zhihu.com/question/438612354/answer/2663530822 来源知乎 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。 这部分现在看不懂没关系源码熟悉一点后回来再来看都可以。它实现了很多接口表示它拥有很多功能AliasRegistry支持别名功能一个名字可以对应多个别名Bean DefinitionRegistry可以注册、保存、移除、获取某个Bean DefinitionBeanFactoryBean工厂可以根据某个bean的名字、或类型、或别名获取某个Bean对象 SingletonBeanRegistry可以直接注册、获取某个单例Bean SimpleAliasRegistry它是一个类实现了AliasRegistry接口中所定义的功能支持别名功能 ListableBeanFactory在BeanFactory的基础上增加了其他功能可以获取所有Bean Definition的beanNames可以根据某个类型获取对应的beanNames可以根据某个类型获取{类型对应的Bean}的映射关系 HierarchicalBeanFactory在BeanFactory的基础上添加了获取父BeanFactory的功能 DefaultSingletonBeanRegistry它是一个类实现了SingletonBeanRegistry接口拥有了直接注册、获取某个单例Bean的功能 ConfigurableBeanFactory在HierarchicalBeanFactory和SingletonBeanRegistry的基础上添加了设置父BeanFactory、类加载器表示可以指定某个类加载器进行类的加载、设置Spring EL表达式解析器表示该BeanFactory可以解析EL表达式、设置类型转化服务表示该BeanFactory可以进行类型转化、可以添加BeanPostProcessor表示该BeanFactory支持Bean的后置处理器可以合并BeanDefinition可以销毁某个Bean等等功能FactoryBeanRegistrySupport支持了FactoryBean的功能AutowireCapableBeanFactory是直接继承了BeanFactory在BeanFactory的基础上支持在创建Bean的过程中能对Bean进行自动装配AbstractBeanFactory实现了ConfigurableBeanFactory接口继承了FactoryBeanRegistrySupport这个BeanFactory的功能已经很全面了但是不能自动装配和获取beanNamesConfigurableListableBeanFactory继承了ListableBeanFactory、AutowireCapableBeanFactory、ConfigurableBeanFactoryAbstractAutowireCapableBeanFactory继承了AbstractBeanFactory实现了AutowireCapableBeanFactory拥有了自动装配的功能DefaultListableBeanFactory继承了AbstractAutowireCapableBeanFactory实现了ConfigurableListableBeanFactory接口和BeanDefinitionRegistry接口所以DefaultListableBeanFactory的功能很强大
http://www.pierceye.com/news/727484/

相关文章:

  • 厦门网站建设系统深圳网站建设骏域网站建设
  • 工商网站备案查询建设新农村网站
  • 建筑网站资料排行榜移动互联网的概念是什么
  • 浙江省建设诚信系统网站网上购物哪个网站最好
  • 做网站电销和生活爱辽宁下载安装
  • 安监网站安全建设信息wordpress电影影视主题
  • 网站打不开服务器错误网站怎么设置支付
  • 做网站的宽度为多少云南省建设工程信息服务平台
  • 网站优化公司大家好桂林网络搭建
  • 做a漫画在线观看网站网站建设这个工作怎么样
  • 商城网站建设缺点培训机构退费
  • 大型网站需要什么样的团队建购物网站 教程
  • 商业设计网站推荐网站注册免费qq
  • 做微信首图的网站阿里网站建设App开发
  • .网站链接策略网页制作手机版
  • 河南网站优化要多少钱网站技术有哪些
  • 域名还在备案可以做网站吗高端设计公司名字大全
  • 简洁的门户网站网站开发文案
  • 信息网站 模板中国建设银行手机银行下载官方网站
  • 番禺网站开发设计小程序后端数据库搭建
  • 丰都集团网站建设云南网站开发公司
  • 赶集网的二级域名网站怎么做海南网站建设报价方案
  • dede做手机网站网站开发小作业
  • 网站建设推广ppt室内设计知名网站
  • asp 网站源码网站搭建好了怎么上到服务器
  • 网站有什么到期wordpress怎么编辑保存
  • 服务器添加网站300500启迪设计
  • 上海市建设安全协会网站移动端页面
  • 手机做网站公司成都住房和城乡建设厅官网
  • 锋创科技园网站建设网站开发ide php