做一个合格的程序猿之浅析Spring IoC源码(九)了解BeanNameAware
来源:互联网 发布:西安行知教育集团李东 编辑:程序博客网 时间:2024/06/08 09:45
上一节,我们粗浅的了解了一下BeanFactoryAware这个接口,知道了这个接口的作用,但我们还不了解这个接口存在的意义和价值,还有待我们去学习,这一节我们还需要接着“粗浅”地了解一下另一个接口BeanNameAware
照旧,我们依旧打开BeanNameAware这个的源代码
官方给出的解释:实现该接口的bean会意识到自己在beanfactory的的名字,注意虽然这并不值得推荐一个对象依赖它的名字,因为名字只是这个bean的一个脆弱的依赖或者一个额外的配置,也有可能这个bean的名称只是用于Spring API的一个不必要的依赖
这个接口表面上的作用就是让实现这个接口的bean知道自己在spring容器里的名字,而且听官方的意思是这个接口更多的使用在spring的框架代码中,实际开发环境应该不建议使用,因为spring认为bean的名字与bean的联系并不是很深,(的确,抛开spring API而言,我们如果获取了该bean的名字,其实意义不是很大,我们没有获取该bean的class,只有该bean的名字,我们也无从下手,相反,因为bean的名称在spring容器中可能是该bean的唯一标识,也就是说再beanDefinitionMap中,key值就是这个name,spring可以根据这个key值获取该bean的所有特性)所以spring说这个不是非必要的依赖
照旧,我们举个简单的例子,说明它的作用
MyBeanNameAware.java
package org.study.spring.beannameaware;import org.springframework.beans.factory.BeanNameAware;public class MyBeanNameAware implements BeanNameAware{public void setBeanName(String name) {System.out.println("my name is "+name);}}
bean-name-aware.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsdhttp://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <bean id="mybeannameaware" class="org.study.spring.beannameaware.MyBeanNameAware"></bean></beans>MyBeanNameAwareTest.java
package org.study.spring.beannameaware;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MyBeanNameAwareTest { @Test public void test2() throws Exception{ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean-name-aware.xml"); MyBeanNameAware myBeanNameAware = applicationContext.getBean("mybeannameaware",MyBeanNameAware.class); }}
运行结果:
这个接口对于spring容器来说,就是可能在spring容器初始化的时候,某些类需要告诉spring容器自己的名称吧~
- 做一个合格的程序猿之浅析Spring IoC源码(九)了解BeanNameAware
- 做一个合格的程序猿之浅析Spring IoC源码(八)了解BeanFactoryAware
- 浅析Spring IoC源码(九)了解BeanNameAware
- 做一个合格的程序猿之浅析Spring IoC源码(二)BeanFactory初始化
- 做一个合格的程序猿之浅析Spring IoC源码(四)分析BeanPostProcessor(1)
- 做一个合格的程序猿之浅析Spring IoC源码(五)再谈BeanPostProcessor(2)
- 做一个合格的程序猿之浅析Spring IoC源码(六)BeanFactoryPostProcessor
- 做一个合格的程序猿之浅析Spring IoC源码(二)BeanFactory初始化
- 做一个合格的程序猿之浅析Spring IoC源码(四)分析BeanPostProcessor(1)
- 做一个合格的程序猿之浅析Spring IoC源码(十)Spring Bean的初始化顺序
- 做一个合格的程序猿之浅析Spring IoC源码(十一)Spring refresh()方法解析之一
- 做一个合格的程序猿之浅析Spring IoC源码(十一)Spring refresh()方法解析后记1
- 做一个合格的程序猿之浅析Spring IoC源码(十一)Spring refresh()方法解析后记2
- 做一个合格的程序猿之浅析Spring IoC源码(一)分析前的准备和思考
- 做一个合格的程序猿之浅析Spring IoC源码(一)分析前的准备和思考
- 做一个合格的程序猿之浅析Spring IoC源码(七)浅谈BeanFactory和FactoryBean
- 浅析Spring IoC源码(八)了解BeanNameAware
- 做一个合格的程序猿之浅析Spring AOP源码(十二) AOP概念理解
- UVA 540 - Team Queue
- poj 2253 Frogger
- 测试
- java 配置jdk环境变量
- 【Android SDK开发】各种Android Dialog创建及其监听事件实现
- 做一个合格的程序猿之浅析Spring IoC源码(九)了解BeanNameAware
- Linux 用户&群组&权限
- TCP的连接建立和释放(三次握手和四次握手)
- sqlserver数据库还原语句
- lua-base64-MD5
- Java实现几种常见排序方法
- Meanshift,聚类算法
- 在 KitKat以上版本中使用Translucent将Navigation Bar透明化
- 关于google protocol buffer(PB)的优缺点和一些个人的理解