Spring之获得Bean本身的id
在某些极端情况下,业务要求程序员在开发Bean类时能预先知道该Bean的配置id,此时可借助Spring提供的BeanNameAware接口,通过该接口即可提交预知Bean的配置id.BeanNameAware接口提供了一个方法:setBeanName(Sring name),该方法的name参数就是Bean的id,实现该方法的Bean类就可通过该方法来获得部署该Bean的id了。
下面定义一个Bean,该Bean实现了BeanNameAware接口。
public class Chinese implements BeanNameAware
{// 保存部署该Bean时指定的id属性private String beanName;public void setBeanName(String name){this.beanName = name;}public void info(){System.out.println("Chinese实现类"+ ", 部署该Bean时指定的id为" + beanName);}
}
Spring容器会检测容器中的所有Bean,如果发现某个Bean实现了BeanNameAware接口,Spring容器就会在创建该Bean之后,自动调用该Bean的setBeanName()方法,调用该方法时,会将Bean的配置id作为参数传给该方法——该方法的实现部分将Spring传入的参数(Bean的配置id)赋给该Chinese对象的beanName实例变量,因此接下来即可通过该beanName实例变量来访问容器本身。
下面写个实现的方法。
public class SpringTest
{public static void main(String[] args){// 创建Spring容器,容器会自动预初始化所有Bean实例ApplicationContext ctx =new ClassPathXmlApplicationContext("beans.xml");Chinese chin = ctx.getBean("chinese" , Chinese.class);chin.info();}
}
Spring之获得Bean本身的id相关推荐
- spring配置文件中Bean中的id和name的区别
1.id属性命名必须满足XML的命名规范,因为id其实是XML中就做了限定的.总结起来就相当于一个Java变量的命名:不能以数字,符号打头,不能有空格,如123,?ad,"ab &quo ...
- spring中的bean
实例化spring容器常用的两种方式: 方法一: 在类路径下寻找配置文件来实例化容器 ApplicationContext ctx=new ClassPathXmlApplicationContext ...
- Spring 中,有两个 id 相同的 bean,会报错吗
我们知道,spring容器里面的bean默认是单例的,所以id是唯一的.但是需要注意,同一类型的bean可以有不同的id,比如有id1->bean,也可以有id2->bean. 下面再来详 ...
- Spring中的Bean配置、属性配置、装配内容详细叙述
文章目录 1.Bean的配置 1.1.配置方式 2.Bean的实例化 2.1.构造器实例化 2.2.静态工厂方式实例化 2.3.实例工厂方式实例化 3.Bean的作用域 3.1.作用域的种类 4.Be ...
- spring(2)装配Bean
[0]README 0)本文部分文字描述转自:"Spring In Action(中/英文版)",旨在review spring(2)装配Bean 的相关知识: 1)在sprin ...
- 面试官:Spring代理目标bean时为何通过TargetSource类型对目标bean封装?
在Spring代理目标bean的时候,其并不是直接创建一个目标bean的对象实例的,而是通过一个TargetSource类型的对象将目标bean进行封装,Spring Aop获取目标对象始终是通过Ta ...
- Spring 三种bean装配的方式
1.使用xml配置文件装配 Spring成功启动的三大要件分别是:Bean定义信息.Bean实现类以及Spring本身. 在xml文件中配置bean,然后使用ClassPathXmlApplicati ...
- Spring中的Bean配置
IOC&DI概述 OPC(Inversion of Control):其思想是反转资源获取的方向.传统的资源查找方式要求组件向容器发起请求查找资源.作为回应,容器适时的返回资源.而应用了IOC ...
- Spring 中的 Bean
前言 欢迎来到本篇文章,鸽了好久了,今天继续写下 Spring 的内容:Spring 中 Bean 的基本概念.基本写法和 3 种实例化 Bean 的方式等. 什么是 Bean? 我们回顾下,什么是 ...
- Spring源码——bean的加载
前言 内容主要参考自<Spring源码深度解析>一书,算是读书笔记或是原书的补充.进入正文后可能会引来各种不适,毕竟阅读源码是件极其痛苦的事情. 本文主要涉及书中第五章的部分,依照书中内容 ...
最新文章
- String、StringBuffer、与StringBuilder的区别
- java增加缓存,java – 如何增加Integer对象的缓存大小
- 225. Implement Stack using Queues
- Nginx——事件驱动机制(雷霆追风问题,负载均衡)
- 看不清的融资迷局 二线玩家字节跳动在打什么主意?
- 细说ASP.NET Forms身份认证
- 黑匣子解密要多久_科普|飞机上的黑匣子内置电池可工作多久?
- mycat分库分表建索引
- 【Angular 4】响应式编程
- 人工智能重点领域有哪些呢?
- 微信全球MBA创新大赛Roadshow最终站火爆中欧
- 【转】浅论ViewState及其与Session的关系
- 简易python爬虫 - 爬取站长论坛信息
- OC 教程 极光推送
- cad画正弦曲线lisp_cadlisp基础教程.pdf
- 老版本MACBOOK更换固态硬盘教程
- [luogu p1069] 细胞分裂
- RGB,CMY(K),YUV,YIQ,YCbCr颜色的转换算法(java实现)
- Git vs GitHub –什么是版本控制及其工作方式?
- Apache Ranger安全区介绍