Spring 依赖查找
Java中的依赖查找
单一类型的依赖查找
JNDI - javax.naming.Context # lookup方法
JavaBeans java.beans.beancontext.BeanContext
集合类型的依赖查找
JavaBeans java.beans.beancontext.BeanContext
类BeanContextServices # getCurrentServiceSelectors (Class serviceClass) 得到一个可迭代对象。
Spring中的依赖查找也借鉴于这里。
层次类型的依赖查找
JavaBeans java.beans.beancontext.BeanContext
Spring中的依赖查找
单一类型依赖查找接口- BeanFactory
-
根据Bean名称查找
-
getBean(String name)
User user = (User) beanFactory.getBean("user"); System.out.println("实时查找:" + user);
-
Spring 2.5 覆盖默认参数:getBean(String,Object...)
使用显示的参数创建Bean的实例(仅在创建新实例时使用,而不是检索现有实例时使用)
-
-
根据 Bean类型查找
-
Bean实时查找
-
Spring 3.0 getBean(Class)
User user = beanFactory.getBean(User.class);
-
Spring 4.1 覆盖默认参数:getBean(Class,Object...)
-
-
Spring 5.1 Bean 延迟查找
-
getBeanProvider(Class)
@Bean @Primary public String helloWorld() { // 方法名就是 Bean 名称 = "helloWorld" return "Hello,World"; } private static void lookupByObjectProvider(AnnotationConfigApplicationContext applicationContext) { ObjectProvider<String> objectProvider = applicationContext.getBeanProvider(String.class); System.out.println(objectProvider.getObject()); } 输出 : Hello,World
ObjectProvider : 返回指定Bean, 并且允许懒加载。当调用getObject()才会返回真正的实例。继承与ObjectFactory。
ObjectProvider<T> extends ObjectFactory<T>, Iterable<T>
-
-
* getBeanProvider(ResolvableType)
-
根据名称加类型查找 getBean(String,Class)
User user = beanFactory.getBean("user", User.class);
集合类型依赖查找接口 - ListableBeanFactory
-
根据Bean类型查找
-
获取同类型Bean名称列表
- genBeanNamesForType(Class)
- Spring 4.2 getBeanNamesForType(ResolvableType)
-
获取相同类型
- getBeansOfType(Class) 以及重载方法
-
网友评论