1. 平时写代码很少去实现这两个接口,这里只是做下了解,方便读Spring源码。

    BeanNameAware接口作用:让BeanNameid有知觉
  1. package com.example.demo.biz.service;
  2.  
  3. import org.springframework.beans.factory.BeanNameAware;
  4. import org.springframework.stereotype.Service;
  5.  
  6. /**
  7. * BeanNameAware作用:让Bean对Name有知觉
  8. */
  9. @Service
  10. public class BizService implements BeanNameAware {
  11. private String beanName;
  12.  
  13. @Override
  14. public void setBeanName(String s) {
  15. this.beanName = s;
  16. }
  17.  
  18. public String getBeanName() {
  19. return beanName;
  20. }
  21. }

测试

  1. package com.example.demo.biz.service;
  2.  
  3. import org.junit.Test;
  4. import org.junit.runner.RunWith;
  5. import org.springframework.boot.test.context.SpringBootTest;
  6. import org.springframework.test.context.junit4.SpringRunner;
  7.  
  8. import javax.annotation.Resource;
  9.  
  10. @RunWith(SpringRunner.class)
  11. @SpringBootTest
  12. public class BeanNameAwareTest {
  13.  
  14. @Resource
  15. private BizService bizService;
  16.  
  17. @Test
  18. public void test1(){
  19. System.out.println(bizService.getBeanName());
  20. }
  21. }

结果:

 BeanFactoryAware接口:让Bean获取配置他们的BeanFactory的引用。

修改下上面的例子

  1. package com.example.demo.biz.service;
  2.  
  3. import org.springframework.beans.BeansException;
  4. import org.springframework.beans.factory.BeanFactory;
  5. import org.springframework.beans.factory.BeanFactoryAware;
  6. import org.springframework.beans.factory.BeanNameAware;
  7. import org.springframework.stereotype.Service;
  8.  
  9. /**
  10. * BeanNameAware作用:让Bean对Name有知觉
  11. */
  12. @Service
  13. public class BizService implements BeanNameAware, BeanFactoryAware {
  14. private String beanName;
  15.  
  16. private BeanFactory factory;
  17.  
  18. @Override
  19. public void setBeanName(String s) {
  20. this.beanName = s;
  21. }
  22.  
  23. public String getBeanName() {
  24. return beanName;
  25. }
  26.  
  27. @Override
  28. public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
  29. this.factory = beanFactory;
  30. }
  31.  
  32. public BeanFactory getFactory() {
  33. return factory;
  34. }
  35.  
  36. @Override
  37. public String toString() {
  38. return "----------------------->";
  39. }
  40. }
  1. @Test
  2. public void test2(){
  3. System.out.println(bizService.getFactory().getBean(bizService.getBeanName()));
  4. }

BeanNameAware和BeanFactoryAware接口的更多相关文章

  1. spring扩展点之四:Spring Aware容器感知技术,BeanNameAware和BeanFactoryAware接口,springboot中的EnvironmentAware

    aware:英 [əˈweə(r)] 美 [əˈwer] adj.意识到的;知道的;觉察到的 XXXAware在spring里表示对XXX感知,实现XXXAware接口,并通过实现对应的set-XXX ...

  2. BeanNameAware接口和BeanFactoryAware接口

    迄今为止,所接触到的Bean都是“无知觉”的,就像黑客帝国中机械工厂里面“养殖”的人类,他们虽然能完成一定的功能,但是根本不知道自己在工厂(BeanFactory)中的代号(id),或者自己是在哪个工 ...

  3. BeanNameAware接口和BeanFactoryAware接口(转)

              迄今为止,所接触到的Bean都是“无知觉”的,就像黑客帝国中机械工厂里面“养殖”的人类,他们虽然能完成一定的功能,但是根本不知道自己在工厂(BeanFactory)中的代号(id) ...

  4. spring之BeanFactoryAware接口

    springBeanFactoryAware (转)要直接在自己的代码中读取spring的bean,我们除了根据常用的set外,也可以通过spring的BeanFactoryAware接口实现,只要实 ...

  5. Spring 的微内核与FactoryBean扩展机制--转载

    作者:江南白衣 原文地址: http://www.blogjava.net/calvin/archive/2005/08/30/11099.html http://www.blogjava.net/c ...

  6. Spring Resource框架体系介绍

    Resource介绍 在使用spring作为容器进行项目开发中会有很多的配置文件,这些配置文件都是通过Spring的Resource接口来实现加载,但是,Resource对于所有低级资源的访问都不够充 ...

  7. Spring Aware接口---BeanNameAware BeanFactoryAware ApplicationContextAware

    前言 对于应用程序来说,应该尽量减少对spring api的耦合程度,然后有时候为了运用spring提供的一些功能,有必要让bean了解spring容器对其管理的细节信息,如让bean知道在容器中是以 ...

  8. BeanFactoryAware和BeanNameAware

    实现 BeanFactoryAware 接口的 bean 可以直接访问 Spring 容器,被容器创建以后,它会拥有一个指向 Spring 容器的引用. BeanFactoryAware 接口只有一个 ...

  9. Spring8:一些常用的Spring Bean扩展接口

    前言 Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心. Spring框架运用了非常多的设计模式,从整体上看,它的设计严格 ...

随机推荐

  1. cocos2d-x C++ 获取网络图片缓存并展示

    #ifndef __HttpGetImg__ #define __HttpGetImg__ #include "cocos2d.h" #include "HttpRequ ...

  2. c# 有序链表合并 链表反转

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. 微信小程序封装年月日时分组件

    第一步,在page下新建component文件,放你封装的小组件,和vue里的component差不多 第二步,在需要使用的组件的.json文件中添加usingComponents 第三步,在页面中引 ...

  4. Asp.net(C#)年月日时分秒毫秒

    年月日时分秒毫秒格式:yyyyMMddHHmmssfff

  5. 跨站访问如何保证session的正常使用

    1.最近公司开发了一个网站项目,一切顺利.由于网页没有兼容手机浏览器,后来添加了一个webapp端,独立于另一个站点,用于解决兼容手机浏览器的问题.其中webapp端的数据全部通过ajax进行请求另一 ...

  6. centos7基于SVN+Apache+IF.svnadmin实现SVN的web管理

    一.介绍 本文介绍的是CentOS7上搭建基于Apache.SVN Server.iF.svnadmin实现web后台可视化管理SVN. iF.SVNAdmin应用程序是Subversion授权文件基 ...

  7. redis 列表(list)函数

    列表(list)函数 lPush 命令/方法/函数 Description Adds the string value to the head (left) of the list. Creates ...

  8. Unity 让物体朝摄像机观察方向移动,已摇杆方向转向

    using System.Collections;using System.Collections.Generic;using UnityEngine; [RequireComponent(typeo ...

  9. 2018.6.10数据结构串讲_HugeGun

    链接: https://pan.baidu.com/s/1uQwLZAT8gjENDWLDm7-Oig 密码: mk8p @echo off : ) shuju test test_ fc test. ...

  10. .NET Framework简介

    NET Framework 就是微软Web Services 引擎1.NET Framework 旨在实现下列目标:提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但 ...