Spring单一类型依赖查找Bean
单一类型依赖查找接口 - BeanFactory
BeanFacotry是spring中比较原始的Factory,BeanFactory是个Factory,也就是IOC容器或对象工厂
- 根据Bean名称查找
- getBean(String)
- 覆盖默认参数getBean(String,Object)
- 根据Bean类型查找
- Bean实时查找
- getBean(Class)
- 覆盖默认参数 getBean(Class,Object)
- Bean延时查找
- getBeanProvider(Class)
- getBeanProvider(ResolvableType)
- Bean实时查找
- 根据Bean名称和Bean类型查找
- getBean(String,Class)
实体类Rumenz.java
package com.rumenz;
public class Rumenz {private Integer id;private String name;@Overridepublic String toString() {return "Rumenz{" +"id=" + id +", name='" + name + '\'' +'}';}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
根据Bean名称查找
package com.rumenz;public class DemoApplication {public static void main(String[] args) {AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();ac.register(DemoApplication.class);ac.refresh();//根据名称查找Rumenz rumenz= (Rumenz) ac.getBean("rumenz");System.out.println(rumenz);ac.close();}@Beanpublic Rumenz rumenz(){Rumenz rumenz = new Rumenz();rumenz.setId(123);rumenz.setName("入门小站");return rumenz;}
}
根据类型查找
package com.rumenz;import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;public class DemoApplication {public static void main(String[] args) {AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();ac.register(DemoApplication.class);ac.refresh();//根据类型查找Rumenz rumenz = ac.getBean(Rumenz.class);System.out.println(rumenz);ac.close();}@Beanpublic Rumenz rumenz(){Rumenz rumenz = new Rumenz();rumenz.setId(123);rumenz.setName("入门小站");return rumenz;}}
Bean延时查找 getBeanProvider
package com.rumenz;
import java.util.Iterator;public class DemoApplication {public static void main(String[] args) {AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();ac.register(DemoApplication.class);ConfigurableListableBeanFactory beanFactory = ac.getBeanFactory();ac.refresh();ObjectProvider<Rumenz> obj = beanFactory.getBeanProvider(Rumenz.class);Iterator<Rumenz> iterator = obj.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}ac.close();}@Beanpublic Rumenz rumenz(){Rumenz rumenz = new Rumenz();rumenz.setId(123);rumenz.setName("入门小站");return rumenz;}}
根据Bean名称和Bean类型查找
package com.rumenz;public class DemoApplication {public static void main(String[] args) {AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();ac.register(DemoApplication.class);ac.refresh();//根据Bean名称和Bean类型查找Rumenz rumenz = ac.getBean("rumenz",Rumenz.class);System.out.println(rumenz);ac.close();}@Beanpublic Rumenz rumenz(){Rumenz rumenz = new Rumenz();rumenz.setId(123);rumenz.setName("入门小站");return rumenz;}}
原文: https://rumenz.com/rumenbiji/spring-get-single-bean.html
Spring单一类型依赖查找Bean相关推荐
- Spring集合类型依赖查找
集合类型依赖查找接口 - ListableBeanFactory 根据 Bean 类型查找 获取同类型 Bean 名称列表 getBeanNamesForType(Class) getBeanName ...
- Spring 延迟依赖查找Bean
Bean 延迟依赖查找接口 // 一个对象工厂 public interface ObjectFactory<T> {// 返回一个对象T getObject() throws Beans ...
- Spring 层次性依赖查找Bean
层次性依赖查找接口 - HierarchicalBeanFactory 双亲 BeanFactory:getParentBeanFactory() 层次性查找 根据 Bean 名称查找 基于 cont ...
- SpringIoc依赖查找-5
1. 依赖查找的今世前生: Spring IoC容器从Java标准中学到了什么? 单一类型依赖查找 JNDI - javax.naming.Context#lookup(javax.naming.Na ...
- Java J2EE中的依赖查找
个人看法:设计依赖查找的设计模式,是为了解耦. 单一类型依赖查找 JNDI javax.naming.Context#lookup JavaBeans java.beans.beancontext.B ...
- Spring依赖查找中的常见异常
文章目录 BeansException的子接口 NoSuchBeanDefinitionException不存在要查找的Bean NoUniqueBeanDefinitionException 容器中 ...
- 【spring容器启动】之bean的实例化和初始化(文末附:spring循环依赖原理)
本次我们通过源码介绍ApplicationContext容器初始化流程,主要介绍容器内bean的实例化和初始化过程.ApplicationContext是Spring推出的先进Ioc容器,它继承了旧版 ...
- Spring安全依赖查找
依赖查找安全性对比 依赖查找类型 代表实现 是否安全 单一类型 BeanFactory#getBean 否 ObjectFactory#getObject 否 ObjectProvider#getIf ...
- Spring高手之路——深入理解与实现IOC依赖查找与依赖注入
本文从xml开始讲解,注解后面给出 文章目录 1. 一个最基本的 IOC 依赖查找实例 2. IOC 的两种实现方式 2.1 依赖查找(Dependency Lookup) 2.2 依赖注入(Depe ...
最新文章
- 五分钟搞定 Linux 文档全部知识,就看这篇文章
- eclipse3.6默认指向 WebContent 目录 修改为 webRoot
- Oracle表字段的增删改和重命名
- 苏宁张近东和富士康郭台铭为什么要抛售阿里巴巴股票?
- 【转】Vector与ArrayList区别
- 【DP】错排问题(ybtoj DP-1-1)
- 麦克劳林展开式_数学家麦克劳林与牛顿的故事
- python导入mongodb_python实现mongodb的备份与导入
- linux下时区的一些认识
- H3C IPv6地址配置命令
- Java基础之Java 修饰符
- phpcms上线步骤,无法生成缓存,页面空白原因
- informatic对表的增量抽取机制
- poj3537 Crosses ans Crosses
- arn-linux-gcc编译失败,arm-linux-gnueabihf-gcc交叉编译可执行程序失败的一种处理办法...
- win10锁屏壁纸保存方法
- 广州大学 数据结构实验报告
- 搭建spark源码运行环境报错及解决办法
- #2708. 黑暗(dark)
- 关于安装Python过程中 无法访问Windows Installer服务问题解决
热门文章
- linux下的图形界面扫雷游戏(Gtk+2.0)
- Executors 线程池的7个参数详解
- pair的用法 make_pair
- python的dropna 和notna的性能_python轻松滤除缺失数据
- 怎么看电脑有没有蓝牙_怎么选购电脑音响?挑选到性价比高的电脑桌面音箱,看完这篇推荐指南就懂了!...
- Java中的深拷贝(深复制)和浅拷贝(浅复制)
- 如何 配置apache 读取php模块中的 配置文件
- Windows7下搭建Eclipse+Python开发环境
- CentOS 安装jdk1.7 32位
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(8月5日-8月12日)