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

佛山做网站推广河南建达工程建设监理公司网站

佛山做网站推广,河南建达工程建设监理公司网站,网站建设步骤完整版,怎么样提升自己的学历DefaultListableBeanFactory 是一个完整的、功能成熟的 IoC 容器,如果你的需求很简单,甚至可以直接使用 DefaultListableBeanFactory,如果你的需求比较复杂,那么通过扩展 DefaultListableBeanFactory 的功能也可以达到&#xff0c…

DefaultListableBeanFactory 是一个完整的、功能成熟的 IoC 容器,如果你的需求很简单,甚至可以直接使用 DefaultListableBeanFactory,如果你的需求比较复杂,那么通过扩展 DefaultListableBeanFactory 的功能也可以达到,可以说 DefaultListableBeanFactory 是整个 Spring IoC 容器的始祖。

新建两个实体类User和UserMessage类和一个配置类MyConfig

@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserMessage {private String phone;private String address;
}@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String username;@Autowiredprivate UserMessage userMessage;
}public class MyConfig {@Beanpublic User user(){return new User();}@Beanpublic UserMessage userMessage(){return new UserMessage("17860397188","123456");}
}

 动态注册 Bean,这是 DefaultListableBeanFactory 的功能之一,不过准确来说应该是动态注册 BeanDefinition 。

DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(MyConfig.class).getBeanDefinition();beanFactory.registerBeanDefinition("config",beanDefinition);AnnotationConfigUtils.registerAnnotationConfigProcessors(beanFactory); //为beanfactory添加后处理器//beanfactory 后处理器解析@Bean等注解Map<String, BeanFactoryPostProcessor> beansOfType = beanFactory.getBeansOfType(BeanFactoryPostProcessor.class);beansOfType.values().forEach(i->i.postProcessBeanFactory(beanFactory));//Bean后处理器,针对Bean生命周期的各个阶段提供扩展,例如@AutowiredbeanFactory.getBeansOfType(BeanPostProcessor.class).values().forEach(beanFactory::addBeanPostProcessor);Arrays.stream(beanFactory.getBeanDefinitionNames()).forEach(i-> System.out.println(i));User user = (User) beanFactory.getBean("user");System.out.println(user.getUserMessage());

Bean 的懒加载。这个时候先把 BeanDefinition 定义好,等到真正调用 Bean 的时候,才会去初始化 Bean。在 DefaultListableBeanFactory 中还有一个 preInstantiateSingletons 方法可以提前注册 Bean,该方法是在 ConfigurableListableBeanFactory 接口中声明的,DefaultListableBeanFactory 类实现了 ConfigurableListableBeanFactory 接口并实现了接口中的方法。

@Override
public void preInstantiateSingletons() throws BeansException {if (logger.isTraceEnabled()) {logger.trace("Pre-instantiating singletons in " + this);}// Iterate over a copy to allow for init methods which in turn register new bean definitions.// While this may not be part of the regular factory bootstrap, it does otherwise work fine.List<String> beanNames = new ArrayList<>(this.beanDefinitionNames);// Trigger initialization of all non-lazy singleton beans...for (String beanName : beanNames) {RootBeanDefinition bd = getMergedLocalBeanDefinition(beanName);if (!bd.isAbstract() && bd.isSingleton() && !bd.isLazyInit()) {if (isFactoryBean(beanName)) {Object bean = getBean(FACTORY_BEAN_PREFIX + beanName);if (bean instanceof FactoryBean) {final FactoryBean<?> factory = (FactoryBean<?>) bean;boolean isEagerInit;if (System.getSecurityManager() != null && factory instanceof SmartFactoryBean) {isEagerInit = AccessController.doPrivileged((PrivilegedAction<Boolean>)((SmartFactoryBean<?>) factory)::isEagerInit,getAccessControlContext());}else {isEagerInit = (factory instanceof SmartFactoryBean &&((SmartFactoryBean<?>) factory).isEagerInit());}if (isEagerInit) {getBean(beanName);}}}else {getBean(beanName);}}}// Trigger post-initialization callback for all applicable beans...for (String beanName : beanNames) {Object singletonInstance = getSingleton(beanName);if (singletonInstance instanceof SmartInitializingSingleton) {final SmartInitializingSingleton smartSingleton = (SmartInitializingSingleton) singletonInstance;if (System.getSecurityManager() != null) {AccessController.doPrivileged((PrivilegedAction<Object>) () -> {smartSingleton.afterSingletonsInstantiated();return null;}, getAccessControlContext());}else {smartSingleton.afterSingletonsInstantiated();}}}
}

http://www.yayakq.cn/news/339823/

相关文章:

  • 延安市建设厅网站上海 网站建设 500强
  • 建设企业网站个人网银百度快照 直接进入网站
  • 成都房地产信息网官网英文网站seo方案
  • 留言网站模板吉林省建设厅网站周军
  • 嘉兴网站制作星讯网络科技河北辛集市网站建设
  • 凡科建站电脑版网址wordpress流水布局主题
  • 在线做分析图的网站金融视频直播网站开发
  • 湘潭网站seo浏览器 网络 网站
  • 网站备案上海免费网站建设制作
  • 音乐网站手机模板企业网站seo优化怎么做
  • dedecms网站乱码塘沽论坛网
  • 微信公众号小说代理和网站结合怎么做网页设计与制作相关书籍
  • 南充网站建设hulingwl抖音代运营是啥
  • 网站分站程序WordPress如何上传木马
  • 建设部网站工程资质好网站建设公司昆明
  • 网站改版业务提高百度搜索排名
  • 网站标题更换天津滨海新区小程序网站建设
  • 成都网站的建设dede网站首页
  • 建网站赚钱投票小程序
  • 个人免费开发网站南昌网站设计网站开发
  • 常州网站建设招聘茂南网站开发公司
  • 网站服务器租赁php语言开发网站流程
  • pc端网站设计规范.net响应式网站模板
  • 手机网站建站软件专业网站制作公司
  • 做淘宝的导购网站泊头哪里建网站呢
  • 淮南市重点工程建设管理局网站安徽省建设工程信息网官方
  • 中国优秀网站建设官网百度搜索结果
  • 内销网站怎么做网站关键词优化价格
  • 做展示空间设计的网站指数运算公式大全
  • 伊川县住房和城乡建设厅网站路由器可以做网站服务器吗