文档章节

非注入方式取得spring注入bean的util类实现

伊人梦醉
 伊人梦醉
发布于 2016/06/20 12:21
字数 231
阅读 725
收藏 0
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public final class SpringBeanUtil implements ApplicationContextAware {

    private static ApplicationContext ctx;

    public static Object getBean(String id) {
        if (ctx == null) {
            throw new NullPointerException("ApplicationContext is null");
        }
        return ctx.getBean(id);
    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        ctx = applicationContext;
    }

}


实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入ApplicationContext的实例。

 

<bean class="*.SpringBeanUtil"/>


这样在spring配置文件加载时会自动执行ApplicationContextAware的setApplicationContext方法,将applicationContext对象传递给我们的Util类。

 

SpringBeanUtil.getBean("myBean");


在某些时候我们不希望通过注入也能取得某些bean时有用。

PS:
Spring 中提供一些Aware相关接口,像是BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,这些 Aware接口的Bean在被初始之后,可以取得一些相对应的资源,例如实现BeanFactoryAware的Bean在初始后,Spring容器将会注入BeanFactory的实例,而实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入 ApplicationContext的实例等等。

© 著作权归作者所有

伊人梦醉
粉丝 7
博文 74
码字总数 31983
作品 0
海淀
程序员
私信 提问
加载中

评论(0)

spring学习4-bean配置文件

上篇简单介绍了一下bean配置文件注入简单的属性和复杂一点的类注入,今天说一下其他类型的注入。 spring中提供配置Bean有三种实例化的方式 类构造器实例化 静态工厂方法实例化 实例工厂方法实...

大嘴吃鸡腿
2014/03/17
3K
0
Spring知识点记录

1. Spring配置文件不允许出现两个相同id的,但却可以出现两个相同name的,如果有多个name相同的,通过getBean(beanName)获取Bean时,将返回最后声明的那个Bean,原因是后面的Bean覆盖了前面同...

李德伦
2014/08/18
509
2
十年架构师详解,Spring-IoC容器装配Bean

先看一下Spring容器内部是如何协助的,也就是Spring容器、Bean的配置信息、Bean的实现类及应用程序之间的关系,如下图 由上图我们看到,一个Bean从创建到被程序使用经历了四个阶段。本文主要...

Java-飞鱼
2019/07/01
16
0
Spring中,使用工具类无法自动注入service

这个问题我其实遇到很久了,目前解决方案是手动注入service,并且把工具类也手动注入。 场景: 在spring中,我们经常会定义工具类来做一些奇怪的事情,我当前是通过定时任务quarz调度工具类,...

一个不正经的程序员
2017/07/13
1.6K
7
spring的ioc容器的实现原理(附测试代码)

 spring如今在java开源框架中大行其道,很受欢迎,是轻量级JAVA EE中的核心框架,企业级应用信息系统开发的首选框架,它不愧是是JAVA中重量级框架EJB强大挑战对手。因为其灵活的扩展性和伸缩...

candies
2014/03/01
202
0

没有更多内容

加载失败,请刷新页面

加载更多

Java小案例: 1000以内的水仙花数

要求在控制台分别展示1000以内的水仙花数。 如下:↓ 水仙花数规则: 水仙花数至少是一个3位数 每位数字的立方数的累加和,正好等于该数字本身。 例如:153就是一个水仙花数。每位数字分别...

漫路h
昨天
66
0
centos 防火墙端口设置

查看开放的端口号 firewall-cmd --lists-all 设置开放的端口号 firewall-cmd --add-service=http --permanent 1. //--permanent表示永久生效,不加这个参数的话只会针对本次执行完命令生效,重...

ACE_LCX
昨天
25
0
入门实战: Spring Cloud 安全控制

认证授权 OAuth 2.0 Authorization Server 添加 Spring Cloud 依赖 配置管理 开启 Eureka 客户端 OAuth 2.0 Resource Server 添加 Spring Cloud 依赖 配置管理 开启 Eureka 客户端 Gateway ...

BeanHo
昨天
39
0
【并发那些事】线程有序化神器CompletionService

<a name="C2O7X"></a> 前言 话说有一天,产品经理突然找到正在摸鱼的你。<br> <br>产品:『我们要加一个聚合搜索功能,当用户在我们网站查询一件商品时,我们分别从 A、B、C 三个网站上查询这...

K1W1
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部