`
fancyboy2050
  • 浏览: 240689 次
  • 性别: Icon_minigender_1
  • 来自: 皇城根儿下
社区版块
存档分类
最新评论

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

    博客分类:
  • java
阅读更多
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的实例等等。
分享到:
评论

相关推荐

    Web项目中获取SpringBean与在非Spring组件中获取SpringBean.pdf

    总的来说,获取非Spring管理组件中的SpringBean主要有两种方式:一是通过实现`ApplicationContextAware`接口并存储ApplicationContext,二是使用注解和静态内部类来注入BeanFactory。这两种方法都是Spring框架提供的...

    普通类调用Spring bean对象

    普通类可以通过`@Autowired`注解来注入bean。 5. **工具类**:为了简化代码,有时我们会创建一个工具类,该类持有`ApplicationContext`的单例,提供获取bean的方法。例如: ```java public class SpringUtil { ...

    Spring boot将配置属性注入到bean类中

    在Spring Boot中,属性注入是核心特性之一,它使得我们可以方便地将配置文件中的参数值注入到Bean类的属性中,从而实现灵活的配置管理。本文将详细讲解如何利用`@ConfigurationProperties`注解以及与`@...

    day38 13-Spring的Bean的属性的注入:SpEL注入

    在Spring框架中,Bean的属性注入是其核心功能之一,使得我们可以轻松地管理对象的依赖关系,无需在代码中硬编码这些依赖。本篇将详细探讨Spring中的SpEL(Spring Expression Language)注入,这是一种强大的表达式...

    spring static静态方法里面注入bean空指针解决

    在Spring框架中,静态方法内部注入Bean导致空指针异常是一个常见的问题,特别是在处理较旧的项目时。这里我们分析两种解决这个问题的方法。 首先,让我们深入理解问题的原因。在Spring中,`@Autowired`注解用于自动...

    Spring Boot中Bean定义方调用方式解析

    在 Spring Boot 中,我们可以创建一个名为 SpringUtil 的工具类,该类实现 ApplicationContextAware 接口,并加入 Component 注解,让 Spring 扫描到该 Bean。这样,我们就可以在普通类中获取 applicationContext ...

    spring4示例代码

    spring-1 演示了使用setter方式及构造器方式创建bean,util:list标签创建集合,p标签简化配置 和依赖注入, 以及bean的autowire和继承与依赖,以及bean的作用域。 spring-2 演示了外部配置文件的引入(connection)...

    获取Spring容器

    因此,在可能的情况下,建议使用`@Autowired`或`@Resource`等注解来自动注入Bean。 通过以上介绍,我们可以了解到如何在Spring应用中通过编程的方式手动获取Spring容器中的对象。这种方式为开发者提供了更大的灵活...

    自定义注解得使用,模拟spring通过注解方式创建bean实例

    本篇将深入探讨如何自定义注解并模拟Spring通过注解方式创建bean实例。 首先,了解注解(Annotation)在Java中的角色。注解是一种元数据,它提供了在源代码中添加信息的方式,这些信息可以被编译器或运行时环境读取...

    关于SpringBoot获取IOC容器中注入的Bean(推荐)

    在给定的示例代码中,我们可以看到,作者使用了第三种方式,创建了一个公共类`SpringUtil`来获取IOC容器中注入的Bean对象。这个类实现了`ApplicationContextAware`接口,使用`setApplicationContext`方法来设置`...

    两种方式通过spring实现定时执行任务操作

    在提供的`springTimer`压缩包中,你可以找到相关的源码和配置示例,帮助你更好地理解和实践这两种定时任务的实现方式。通过深入学习和实践,你将能够熟练掌握Spring中的定时任务管理,提升你的开发技能。

    详解Java的Spring框架中bean的注入集合

    在这个例子中,`key-ref`和`value-ref`用于注入Bean的引用作为键值对。 4. `&lt;props&gt;`:用于注入`java.util.Properties`对象,通常用于存储配置属性。每个子元素被视为一行,键和值通过等号分隔。 ```xml ...

    03_mvc和依赖注入部分实现_源码

    **bean-util-test**:这可能是项目中用来测试bean(Java对象)的工具类或测试模块,它可能包含了对bean的创建、配置和管理,以及相关测试用例。 **shop01、shop02、shop03**:这些可能是项目中的不同阶段或者不同的...

    Spring如何注入Date类型的变量

    这篇博客将探讨如何在Spring中有效地注入Date对象到bean的属性中。首先,我们需要了解Spring依赖注入的基本概念,它是Spring框架的核心特性之一,用于管理bean的生命周期和装配。 依赖注入(Dependency Injection,...

    Spring相关测试1

    通过理解并熟练掌握这些配置方法和细节,开发者可以在Spring框架中灵活地管理Bean,实现依赖注入和控制反转,从而提高代码的可维护性和可测试性。 总的来说,Spring框架的Bean配置和注入是其核心特性之一,对于理解...

    Spring 学习笔记 spring帮助文档

    在本篇Spring学习笔记中,我们将深入探讨Spring的基本概念,包括bean的配置、依赖注入、IOC容器以及Bean的实例化方式。 首先,Spring中的核心概念是bean。Bean是Spring框架中的基本构建块,它们是被管理的对象,...

    详解SpringBoot 多线程处理任务 无法@Autowired注入bean问题解决

    SpringBoot 多线程处理任务中无法@Autowired注入bean问题解决 在 SpringBoot 应用程序中,多线程处理任务是一个常见的场景,但是,在多线程处理任务中无法使用 @Autowired 注入 bean,这是一个常见的问题。今天,...

    Spring的经典面试题

    - **依赖注入(Dependency Injection, DI)**:依赖注入是IoC的一种具体实现方式,指的是不通过硬编码的方式将依赖对象直接写在代码里,而是通过配置文件等方式,由外部容器(如Spring)在运行时将依赖对象注入到...

    spring2.5基于注解例子程序

    Spring 2.5是Spring框架的一个重要版本,它引入了大量增强的功能,特别是对注解的支持,这使得在Java应用程序中实现依赖注入和面向切面编程(AOP)变得更加简单和直观。在这个基于注解的例子程序中,我们将深入探讨...

Global site tag (gtag.js) - Google Analytics