spring容器中的beanName
1. 一个类实现多个接口
如下图中的JobService.java, 此时这个beanName=jobService, 没有包名,类名字首字母小写
可以使用下面三种方式获得这个bean
IProcess bean = applicationContext.getBean(IProcess.class);
Object jobService = applicationContext.getBean("jobService");
ITask jobService1 = applicationContext.getBean("jobService", ITask.class);
但是不能使用加包名的方式 Object bean1 = applicationContext.getBean("com.web.beanname.JobService");
2. 一个接口有多个实现类
此时容器中有两个bean: jobService2, jobService
不能使用接口的方式获取bean>>> IProcess bean = applicationContext.getBean(IProcess.class); , 因为容器找到两个,不知道要返回哪一个
3. 不同类的bean有相同名称?
同一个容器中不能存在相同名称的bean。如果两个类包名不同,但类名相同,那么需要至少修改其中一个,定义一个别名
为什么有上面的实验:
一些自定义的框架getBean和Spring不一样
spring默认是getBeanByType, @Autowire + @Qualifier
j2ee 默认getBeanByName 或者 getBeanByType @Resource 参考:https://www.cnblogs.com/think-in-java/p/5474740.html
他们解析的是Field上面注解的name,type, (最不济也是Field的type)
分布式定时任务框架schedulerX的注入方式是getBeanByName, 解析的是Field的name, 此时使用哪种注解都不行,因为他不解析上面的两种annotation,此时需要注意fieldName写成bean的实现类首字母小写的形式
后记:
spring boot中@Configuration的beanName是包含包名的字符串, @Configuration的内部类也会生成bean,只不过多加了内部类的标识符$
spring容器中的beanName的更多相关文章
- (spring-第1回【IoC基础篇】)Spring容器中Bean的生命周期
日出日落,春去秋来,花随流水,北雁南飞,世间万物皆有生死轮回.从调用XML中的Bean配置信息,到应用到具体实例中,再到销毁,Bean也有属于它的生命周期. 人类大脑对图像的认知能力永远高于文字,因此 ...
- 在listener或者工具中使用spring容器中的bean实例
在项目中经常遇见需要在Listener中或者工具中使用Spring容器中的bean实例,由于bean不能在stataic的类中使用. 介绍一种方式: public class SpringTool { ...
- 从spring容器中取出注入的bean
从spring容器中取出注入的bean 工具类,代码如下: package com.hyzn.fw.util; import org.springframework.beans.BeansExcept ...
- 获取Spring容器中Bean实例的工具类(Java泛型方法实现)
在使用Spring做IoC容器的时候,有的类不方便直接注入bean,需要手动获得一个类型的bean. 因此,实现一个获得bean实例的工具类,就很有必要. 以前,写了一个根据bean的名称和类型获取b ...
- Spring 容器中 Bean 的生命周期
Spring 容器中 Bean 的生命周期 1. init-method 和 destory-method 方法 Spring 初始化 bean 或销毁 bean 时,有时需要作一些处理工作,因此 s ...
- IoC基础篇(一)--- Spring容器中Bean的生命周期
日出日落,春去秋来,花随流水,北雁南飞,世间万物皆有生死轮回.从调用XML中的Bean配置信息,到应用到具体实例中,再到销毁,Bean也有属于它的生命周期. 人类大脑对图像的认知能力永远高于文字,因此 ...
- 基于ImportBeanDefinitionRegistrar和FactoryBean动态注入Bean到Spring容器中
基于ImportBeanDefinitionRegistrar和FactoryBean动态注入Bean到Spring容器中 一.背景 二.实现方案 1.基于@ComponentScan注解实现 2.基 ...
- 从Spring容器中获取Bean。ApplicationContextAware
引言:我们从几个方面有逻辑的讲述如何从Spring容器中获取Bean.(新手勿喷) 1.我们的目的是什么? 2.方法是什么(可变的细节)? 3.方法的原理是什么(不变的本质)? 1.我们的目的是什么? ...
- 获取Spring容器中的Bean
摘要 SpringMVC框架开发中可能会在Filter或Servlet中用到spring容器中注册的java bean 对象,获得容器中的java bean对象有如下方法 Spring中的Applic ...
随机推荐
- java中toString() 、(String)、String.valueOf的区别
1.采用toString() 在使用时要注意,必须保证object不是null值,否则将抛出NullPointerException异常.采用这种方法时,通常派生类会覆盖Object里的toStrin ...
- Poj 2299 Ultra-QuickSort(归并排序求逆序数)
一.题意 给定数组,求交换几次相邻元素能是数组有序. 二.题解 刚开始以为是水题,心想这不就是简单的冒泡排序么.但是毫无疑问地超时了,因为题目中n<500000,而冒泡排序总的平均时间复杂度为, ...
- Azure自动化部署服务 (2)
上一篇文章介绍了如何通过添加用户名和密码的方式实现自动化部署服务中与Azure Subscription的连接. 本文将介绍如何使用证书的方式实现Azure Automation与Azure的Subs ...
- HDOJ5441(图论中的并查集)
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ; ; ...
- Microsoft Data Access Components 2.8
今天在安装金蝶系统的时候,发现这个组件无法安装上 此组件如果跳过,不安装,将会导致金蝶安装完毕后,提醒无法创建账套,也就是金蝶软件无法连接到数据库上,所以此步为必须. 于是乎,网上找这个组件,下载地址 ...
- hibernate查询的方式和变量
1.实体查询: hql="FROM User"; List list= session.createQuery(hql).list(); for(Object obj:list){ ...
- eos各表的关系
在使用EOS WorkFlow的过程中,无论是开发者在“开发环境”中定义业务流程,还是“工作流引擎”控制流程流转,或是工作流参与者使用的“客户端”,再或者管理员使用的“管理与监控工具”,在这期间都会贯 ...
- HBase表数据分页处理
HBase表数据分页处理 HBase是Hadoop大数据生态技术圈中的一项关键技术,是一种用于分布式存储大数据的列式数据库,关于HBase更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人 ...
- 解决Torch.load()错误信息: UnicodeDecodeError: 'ascii' codec can't decode byte 0x8d in position 0: ordinal not in range(128)
使用PyTorch跑pretrained预训练模型的时候,发现在加载数据的时候会报错,具体错误信息如下: File "main.py", line 238, in main_wor ...
- 【OpenGL】Shader概述
目录(?)[-] 综述 编译一个Shader 链接一个Shader 删除一个Shader 指定使用一个Shader Program 删除一个Shader Program 备注 这篇文章讲述了Shade ...