import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import org.springframework.core.io.ClassPathResource; public class Test { /** * 获取bean工厂(第一种方式) * * @param filePath * 相对路径 注意:文件必须在类路径下 * 比如:applicationContext.xml文件在包com.xieke.test下, * 路径就是/com/xieke/test/applicationContext.xml * @return */ @SuppressWarnings("deprecation") public static BeanFactory getBeanFactory(String filePath) { return new XmlBeanFactory(new ClassPathResource(filePath)); } /** * 获取bean工厂(第二种方式) * * @param filePath * 相对路径 注意:文件必须在类路径下 * 比如:applicationContext.xml文件在包com.xieke.test下, * 路径就是/com/xieke/test/applicationContext.xml * @return */ public static ApplicationContext getApplicationContext(String filePath) { return new ClassPathXmlApplicationContext(filePath); } /** * 获取bean工厂(第三种方式) * * @param filePath * 绝对路径或相对路径 如果是相对路径,则从当前项目下的目录开始计算, * 如:当前项目/WebContent/WEB-INF/applicationContext.xml, * 相对路径就是/WebContent/WEB-INF/applicationContext.xml * @return */ public static ApplicationContext getContext(String filePath) { return new FileSystemXmlApplicationContext(filePath); } public static <T> void printBean(BeanFactory beanFactory, String beanId, Class<T> className) { System.out.println(beanFactory.getBean(beanId, className)); } public static void main(String[] args) { BeanFactory beanFactory = getBeanFactory("/com/xieke/test/applicationContext.xml"); printBean(beanFactory, "userBean", User.class); printBean(beanFactory, "userBean2", User.class); ApplicationContext applicationContext = getApplicationContext("/com/xieke/test/applicationContext.xml"); printBean(applicationContext, "userBean", User.class); printBean(applicationContext, "userBean2", User.class); ApplicationContext context = getContext("/WebContent/WEB-INF/applicationContext.xml"); printBean(context, "userBean", User.class); printBean(context, "userBean2", User.class); } }
转载请注明出处: http://xieke90.iteye.com/blog/2234803
相关推荐
这里我们将详细探讨如何在Java中通过Spring获取配置的bean。 1. **BeanFactory与ApplicationContext** - **BeanFactory** 是Spring中最基础的IoC容器,负责管理和实例化Bean。它允许开发者定义Bean的生命周期和...
对于一些复杂的项目来说,可能会涉及到多个不同的Spring配置文件,这时可以考虑封装一个自定义工具类来统一处理Bean的获取逻辑,例如题目中提到的`ApplicationContextUtil`: ```java import org.springframework....
获取 Spring 里注册的 Bean 对象可以使用四种方法:继承 BaseDispatchAction、实现 BeanFactoryAware、使用 ApplicationContext、使用 @Autowired。每种方法都有其特点和应用场景,开发者可以根据实际情况选择合适的...
3. **Java配置类**:Spring 3.0引入了Java配置,允许我们使用Java类来配置Bean。 ```java @Configuration public class AppConfig { @Bean public MyBean myBean() { return new MyBean(); } } ``` 这里的`@Bean...
然而,在某些情况下,我们可能需要在非Spring注解的类中访问Spring容器中的Bean,或者在这些类中使用YAML配置文件中的配置信息。本篇将详细介绍如何在这样的场景下实现这一目标。 首先,让我们来理解如何在非Spring...
当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...
Bean在Spring中是核心组件,它代表了应用程序中的对象,可以通过配置文件、注解或者Java配置类进行定义。Bean的生命周期包括初始化、使用和销毁等阶段,Spring容器负责管理这些过程。Bean可以依赖注入其他Bean,使得...
Spring 中获取 Bean 的多种方式 在 Spring 框架中,获取 Bean 是一个非常重要的步骤,因为它是使用 Spring 框架的基础。Spring 提供了多种方式来获取 Bean,这些方式可以根据不同的应用场景选择使用。 通过 XML ...
9. **加载Bean的方式**:Spring支持多种方式加载Bean,包括XML配置文件、基于注解的配置和Java配置类。 10. **Aware接口**:Spring提供了一系列的Aware接口,如BeanNameAware、BeanFactoryAware和...
这些方法都可以帮助你在Java程序中灵活地获取Spring配置的bean。选择哪种方式取决于你的具体需求,如应用类型(Web或非Web)、是否需要自动注入等。理解这些机制有助于更好地利用Spring框架进行开发。
本文将详细介绍如何在Spring中配置两种不同的方式来获取WebLogic JNDI数据源。 #### 一、本地WebLogic Server获取 这种方式适用于当Spring应用与WebLogic服务器在同一台物理机器上运行时的情况。在这种模式下,...
最后,`AutowireCandidateResolver`和`BeanFactoryAware`接口分别提供了候选Bean的判断逻辑和BeanFactory的获取方式,这些在特定场景下能帮助我们实现更复杂的Bean管理。 综上所述,Spring中的Bean接口和注解为...
- **功能概述**:`<beans>`是Spring配置文件的根元素,用来包含一个或多个`<bean>`元素,用于定义Spring容器管理的各种Bean。 #### 二、`<bean>`元素详解 - **基础配置**: - **`class`属性**:表示JavaBean的全...
在Spring框架中,动态注册Bean是一项非常实用的功能,它允许我们在应用运行时向Spring容器添加新的Bean定义。这种能力在很多场景下都是极其有用的,比如根据不同的环境配置加载不同的服务实现,或者在运行时根据某些...
本文主要探讨了Java获取Bean的多种方式,尤其在Spring Boot和IOC(控制反转)环境下。这些方式可以帮助开发者便捷地从Bean容器中检索和使用所需的Bean。 1. **初始化时保存ApplicationContext对象** 当应用启动时...
在 Java 应用中,我们可以创建一个主类来启动应用程序,并从 Spring 容器中获取 Bean 实例。例如: ```java public class MainApp { public static void main(String[] args) { ApplicationContext context = new...
4. 为了启用自动扫描和注册Bean定义,需要在Spring配置文件中使用`<context:component-scan>`标签,并通过`base-package`属性来指定需要扫描的类路径位置。 5. 在配置文件中还可以通过`<aop:aspectj-autoproxy/>`...
总结来说,Spring提供多种方式让我们在应用中获取Bean,包括直接通过名称、类型,或者利用注解实现自动装配。了解这些机制,有助于我们更好地理解和使用Spring框架,提高代码的可维护性和灵活性。同时,源码分析能...
总的来说,获取非Spring管理组件中的SpringBean主要有两种方式:一是通过实现`ApplicationContextAware`接口并存储ApplicationContext,二是使用注解和静态内部类来注入BeanFactory。这两种方法都是Spring框架提供的...