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的实例等等。
分享到:
相关推荐
总的来说,获取非Spring管理组件中的SpringBean主要有两种方式:一是通过实现`ApplicationContextAware`接口并存储ApplicationContext,二是使用注解和静态内部类来注入BeanFactory。这两种方法都是Spring框架提供的...
普通类可以通过`@Autowired`注解来注入bean。 5. **工具类**:为了简化代码,有时我们会创建一个工具类,该类持有`ApplicationContext`的单例,提供获取bean的方法。例如: ```java public class SpringUtil { ...
在Spring Boot中,属性注入是核心特性之一,它使得我们可以方便地将配置文件中的参数值注入到Bean类的属性中,从而实现灵活的配置管理。本文将详细讲解如何利用`@ConfigurationProperties`注解以及与`@...
在Spring框架中,Bean的属性注入是其核心功能之一,使得我们可以轻松地管理对象的依赖关系,无需在代码中硬编码这些依赖。本篇将详细探讨Spring中的SpEL(Spring Expression Language)注入,这是一种强大的表达式...
在Spring框架中,静态方法内部注入Bean导致空指针异常是一个常见的问题,特别是在处理较旧的项目时。这里我们分析两种解决这个问题的方法。 首先,让我们深入理解问题的原因。在Spring中,`@Autowired`注解用于自动...
在 Spring Boot 中,我们可以创建一个名为 SpringUtil 的工具类,该类实现 ApplicationContextAware 接口,并加入 Component 注解,让 Spring 扫描到该 Bean。这样,我们就可以在普通类中获取 applicationContext ...
spring-1 演示了使用setter方式及构造器方式创建bean,util:list标签创建集合,p标签简化配置 和依赖注入, 以及bean的autowire和继承与依赖,以及bean的作用域。 spring-2 演示了外部配置文件的引入(connection)...
因此,在可能的情况下,建议使用`@Autowired`或`@Resource`等注解来自动注入Bean。 通过以上介绍,我们可以了解到如何在Spring应用中通过编程的方式手动获取Spring容器中的对象。这种方式为开发者提供了更大的灵活...
本篇将深入探讨如何自定义注解并模拟Spring通过注解方式创建bean实例。 首先,了解注解(Annotation)在Java中的角色。注解是一种元数据,它提供了在源代码中添加信息的方式,这些信息可以被编译器或运行时环境读取...
在给定的示例代码中,我们可以看到,作者使用了第三种方式,创建了一个公共类`SpringUtil`来获取IOC容器中注入的Bean对象。这个类实现了`ApplicationContextAware`接口,使用`setApplicationContext`方法来设置`...
在提供的`springTimer`压缩包中,你可以找到相关的源码和配置示例,帮助你更好地理解和实践这两种定时任务的实现方式。通过深入学习和实践,你将能够熟练掌握Spring中的定时任务管理,提升你的开发技能。
在这个例子中,`key-ref`和`value-ref`用于注入Bean的引用作为键值对。 4. `<props>`:用于注入`java.util.Properties`对象,通常用于存储配置属性。每个子元素被视为一行,键和值通过等号分隔。 ```xml ...
**bean-util-test**:这可能是项目中用来测试bean(Java对象)的工具类或测试模块,它可能包含了对bean的创建、配置和管理,以及相关测试用例。 **shop01、shop02、shop03**:这些可能是项目中的不同阶段或者不同的...
这篇博客将探讨如何在Spring中有效地注入Date对象到bean的属性中。首先,我们需要了解Spring依赖注入的基本概念,它是Spring框架的核心特性之一,用于管理bean的生命周期和装配。 依赖注入(Dependency Injection,...
通过理解并熟练掌握这些配置方法和细节,开发者可以在Spring框架中灵活地管理Bean,实现依赖注入和控制反转,从而提高代码的可维护性和可测试性。 总的来说,Spring框架的Bean配置和注入是其核心特性之一,对于理解...
在本篇Spring学习笔记中,我们将深入探讨Spring的基本概念,包括bean的配置、依赖注入、IOC容器以及Bean的实例化方式。 首先,Spring中的核心概念是bean。Bean是Spring框架中的基本构建块,它们是被管理的对象,...
SpringBoot 多线程处理任务中无法@Autowired注入bean问题解决 在 SpringBoot 应用程序中,多线程处理任务是一个常见的场景,但是,在多线程处理任务中无法使用 @Autowired 注入 bean,这是一个常见的问题。今天,...
- **依赖注入(Dependency Injection, DI)**:依赖注入是IoC的一种具体实现方式,指的是不通过硬编码的方式将依赖对象直接写在代码里,而是通过配置文件等方式,由外部容器(如Spring)在运行时将依赖对象注入到...
Spring 2.5是Spring框架的一个重要版本,它引入了大量增强的功能,特别是对注解的支持,这使得在Java应用程序中实现依赖注入和面向切面编程(AOP)变得更加简单和直观。在这个基于注解的例子程序中,我们将深入探讨...