非注入方式取得spring注入bean的util类实现
第一种,我用在webservice接口中。
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
/**
* SpringBean的工具类<br>
* 非注入方式取得spring注入bean的util类实现
* @author langkai
*
*/
public final class SpringBeanUtil implements ApplicationContextAware {
private static ApplicationContext ctx;
/**
* 通过spring配置文件中配置的bean id取得bean对象
* @param id spring bean ID值
* @return spring bean对象
*/
public static Object getBean(String id) {
if (ctx == null) {
throw new NullPointerException("ApplicationContext is null");
}
return ctx.getBean(id);
}
@Override
public void setApplicationContext(ApplicationContext applicationcontext)
throws BeansException {
ctx = applicationcontext;
}
}
实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入ApplicationContext的实例。
applicationContext.xml
<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的实例等等。
内容转载至:
http://www.myexception.cn/software-architecture-design/897135.html
================================
第二种,就是传统的Application程序使用的了。
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("springConfig_bus.xml");
IMsgBusService client = (IMsgBusService) context.getBean("client");
分享到:
相关推荐
Spring提供两种主要的自动注入方式:`byName`和`byType`,以及更推荐的`@Autowired`注解。 - `byName`:根据Bean的属性名查找相同名称的Bean进行注入。 - `byType`:如果Bean的属性类型只有一个匹配的Bean,那么...
- **初始化回调**:Spring支持两种类型的初始化回调方法,即`@PostConstruct`注解的方法和在XML中定义的`init-method`属性指定的方法。 2. **容器管理的生命周期回调** - **Singleton Beans的懒加载**:如果Bean...
Spring Boot引入了一种更智能的依赖注入方式——自动配置。自动配置是通过`@EnableAutoConfiguration`注解启动的,它根据项目中的类路径和特定条件自动配置Bean。例如,如果类路径下存在`MongoClient`的jar,Spring ...
Spring 三种依赖注入方式 Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口...
本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念。Spring Bean是Spring IoC容器管理的对象,这些对象的生命周期、依赖关系以及初始化行为由...
首先,我们来了解Spring中的bean注入主要有以下四种方式: 1. **设值注入(Setter Injection)**:这是最常见的一种注入方式,通过setter方法来设置bean的属性。在XML配置文件中,我们可以通过`<property>`标签来...
### Spring 获取 WebLogic JNDI 数据源的两种方式 在Spring框架中,通过JNDI(Java Naming and Directory Interface)可以方便地访问WebLogic服务器中的数据源。这为应用程序提供了高度解耦的数据访问机制,使得...
获取Bean的两种常见方式是: - 使用`FileSystemXmlApplicationContext`,从文件系统加载配置文件。 - 使用`ClassPathXmlApplicationContext`,从类路径加载配置文件。例如: ```java ApplicationContext context...
除了上述两种方式外,还有其他方式可以控制 2 个 bean 的初始化顺序。例如,可以使用 Spring 的 @Order 注解来指定 bean 的初始化顺序,也可以使用 Spring 的生命周期接口(如 InitializingBean)来控制 bean 的初始...
1. **类型匹配**:Spring首先尝试按类型匹配bean,找到最适合的bean注入到目标字段或构造函数。 2. **按名称匹配**:如果存在多个相同类型的bean,Spring会检查目标字段或构造函数是否有`@Qualifier`注解,如果有,...
Spring支持通过XML配置文件使用构造函数注入和setter方法注入两种属性注入方式。 - 构造函数注入:在元素中声明的属性,通过构造函数传递给Bean实例。 - setter方法注入:通过元素设置的属性,Spring调用相应的...
总的来说,获取非Spring管理组件中的SpringBean主要有两种方式:一是通过实现`ApplicationContextAware`接口并存储ApplicationContext,二是使用注解和静态内部类来注入BeanFactory。这两种方法都是Spring框架提供的...
本文将详细介绍构造器注入和Setter注入两种方式。 一、构造器注入 构造器注入是指在创建对象时,通过构造方法将依赖项注入到对象中。这种方式可以确保对象在创建时就已经包含了所有必要的依赖项。要使用构造器注入...
在这个"Spring Bean简单应用实例"中,我们将深入理解这两个概念以及如何在实际应用中使用它们。 首先,控制反转(IoC)是一种设计模式,它将对象的创建和管理职责从应用代码中分离出来,转交给容器来处理。这样,...
Spring提供了两种主要的IOC容器:`BeanFactory`和`ApplicationContext`。 - `BeanFactory`是最基本的容器,它实现了IoC的基本功能,如Bean的创建和管理。然而,它的功能相对较少,适合小型项目。 - `...
这两种方式都避免了硬编码Bean的获取逻辑,使得代码更加灵活和易于维护。 此外,在实际开发中还可能遇到其他获取Bean的方式,比如使用`ApplicationContext`的子类如`ClassPathXmlApplicationContext`或`...
本文将详细探讨Spring中的两种主要注入方式:构造器注入和setter注入,以及它们各自的特点和适用场景。 首先,让我们理解什么是依赖注入(Dependency Injection,简称DI)。在传统的编程模式中,一个类通常会直接...
Bean属性注入主要有两种方式:`setter方法注入`和`构造器注入`。前者通过调用Bean的setter方法来设置属性,后者在创建Bean实例时通过构造器传入参数。Spring还提供了多种注入方式,如`属性值注入`、`引用注入`(注入...
在Spring框架中,依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)是两大核心特性,同时自动注入Bean也是Spring管理对象的一种常见方式。让我们深入探讨这些概念。 首先,...
- 如果多个bean满足注入条件,而没有使用`@Qualifier`进行区分,Spring会报错。此时,要么调整bean的设计,要么使用`@Qualifier`指定注入的bean。 - 使用`@Autowired`时,尽量避免在构造函数中,因为这可能会导致...