import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; @Component public class SpringUtils implements ApplicationContextAware { private static final Logger log = org.slf4j.LoggerFactory.getLogger(SpringUtils.class); private static ApplicationContext context;// 声明一个静态变量保存 @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { context = applicationContext; } /** * 从spring容器里获取bean * * @param beanId */ public static <T> T getBean(String beanId) { T bean = null; try { if (context!=null && StringUtils.isNotEmpty(StringUtils.trim(beanId))) { bean = (T)context.getBean(beanId); } } catch (Exception e) { log.error(e.getMessage(), e); } return bean; } }
相关推荐
例如,如果你需要获取一个名为"userService"的Bean实例,可以这样做: ```java public static void getByUtil() { ApplicationContextUtil.getApplicationContext().getBean("userService"); } ``` 这种方式的...
4. **启动后处理器(BeanPostProcessor)**:这些是特殊类型的Bean,它们在所有常规Bean实例化之后,但初始化之前进行处理。它们的实例化顺序由`@Order`注解决定,或者通过实现`Ordered`接口来控制。 5. **...
可以通过`WebApplicationContextUtils`工具类中的静态方法`getWebApplicationContext()`来获取当前Web应用的`ApplicationContext`实例。一旦获取到了`ApplicationContext`,就可以调用其`getBean()`方法来获取特定...
3. **构造函数注入**:通过构造函数的参数,Spring会自动提供所需的Bean实例。 4. **setter方法注入**:使用`@Autowired`注解在setter方法上,Spring会在运行时调用setter方法注入Bean。 **Spring框架的组件** ...
一旦XML配置加载到Spring容器中,容器将根据配置创建Bean实例,并按照定义进行初始化、依赖注入,最后完成Bean的生命周期管理。 10. **实践操作**: 在实际开发中,我们可以使用Eclipse的Spring插件来简化Bean...
在这个"Spring Bean简单应用实例"中,我们将深入理解这两个概念以及如何在实际应用中使用它们。 首先,控制反转(IoC)是一种设计模式,它将对象的创建和管理职责从应用代码中分离出来,转交给容器来处理。这样,...
构造器注入是指通过调用Bean类的构造器来创建Bean实例。这种方式特别适合于那些具有多个必填依赖项的情况,因为构造器可以确保这些依赖项在Bean实例创建时就被正确地设置。为了支持构造器注入,Bean类必须至少有一个...
5. **工具类**:为了简化代码,有时我们会创建一个工具类,该类持有`ApplicationContext`的单例,提供获取bean的方法。例如: ```java public class SpringUtil { private static ApplicationContext context; ...
总的来说,获取非Spring管理组件中的SpringBean主要有两种方式:一是通过实现`ApplicationContextAware`接口并存储ApplicationContext,二是使用注解和静态内部类来注入BeanFactory。这两种方法都是Spring框架提供的...
在Spring框架中,`DefaultListableBeanFactory`是实际处理Bean实例化和管理的核心类。当调用`getBean()`方法时,它会触发一系列的逻辑,包括解析Bean定义、创建Bean实例、执行初始化回调等。 在`...
在Spring Boot框架中,普通类调用bean是常见的操作,特别是在构建复杂应用时。这篇博客“17. Spring Boot普通类调用bean【从零开始学Spring Boot】”旨在指导初学者如何在非Spring管理的类中访问和使用Spring容器中...
1. **实例化**:Spring容器通过`Class`对象或`FactoryBean`来创建Bean实例。默认情况下,Spring使用无参构造器创建Bean。如果Bean类没有无参构造器,开发者需要提供一个。 2. **属性注入**:Spring容器使用依赖注入...
创建一个工具类`SpringContextUtil`,并实现`ApplicationContextAware`接口,这样Spring会在初始化时自动调用`setApplicationContext`方法,将ApplicationContext注入到静态变量中: ```java public class ...
1. **实例化**:Spring容器在遇到一个Bean定义时,会通过反射机制创建Bean实例。如果Bean定义中有`factory-method`属性,那么Spring会调用指定的方法来实例化Bean,而不是使用默认的构造器。 2. **属性注入**:实例...
我们学习了使用 @Component 注解来标注工具类,使用 ApplicationContext 对象来获取 Bean 对象,并使用单例模式来确保工具类只有一个实例对象。这些知识点将有助于我们更好地理解 SpringBoot 框架,并提高我们编写高...
在本篇文章中,我们将深入探讨Spring的核心容器及其bean的概念,以帮助你更好地理解和使用这个强大的工具。 **Spring核心容器** Spring的核心容器是整个框架的基础,它负责创建、配置和管理bean。主要有两个关键...
在基于Web的应用程序中,我们可以通过Spring提供的工具类获取ApplicationContext对象,然后获取Bean实例。例如: ``` ServletContext sc = ...; ApplicationContext ac1 = WebApplicationContextUtils....
Spring提供了`ContextLoader`和`WebApplicationContextUtils`等工具类,可以从当前线程或ServletContext中获取ApplicationContext。 ```java // 在非Web应用中 ApplicationContext ac = ContextLoader....
在Spring框架中,ClassPathResource是获取类路径资源的一个重要工具。它允许我们从类路径(classpath)中读取文件,如配置文件、属性文件等,这对于构建和管理Java应用程序非常有用。本篇文章将深入探讨如何使用Spring...
总之,Spring Boot通过`ApplicationContextAware`接口和相关的工具类,使得在多线程环境中获取和使用bean变得简单易行,避免了手动管理bean实例的问题,保证了代码的整洁和可维护性。同时,这种方式也确保了bean的...