spring如何获取bean的6种方法,你知道几个?

如题所述

Bean工厂(com.springframework.beans.factory.BeanFactory)是Spring框架的核心接口,提供了高级IoC的配置机制,使管理不同类型的Java对象成为可能。应用上下文(com.springframework.context.ApplicationContext)建立在BeanFactory之上,提供更多的面向应用的功能,如国际化支持和框架事件体系,便于创建实际应用。通常称BeanFactory为IoC容器,ApplicationContext为应用上下文,尽管在行文中我们有时会互换使用。

ApplicationContext和BeanFactory在初始化时存在区别:BeanFactory在初始化容器时并未实例化Bean,直至访问某个Bean时才实例化目标Bean;而ApplicationContext在初始化时会实例化所有单实例的Bean,因此初始化时间略长。

获取XML中配置的Bean,关键在于获取.springframework.context.ApplicationContext,以下是几种实现方法:

方法一:在初始化时保存ApplicationContext对象。适用于采用Spring框架的独立应用程序,需通过配置文件手工初始化Spring。

方法二:利用Spring提供的工具类获取ApplicationContext对象。适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext,再通过它获取所需类实例。与方法一的区别在于,前者在获取失败时抛出异常,后者返回null。

方法三:继承自抽象类ApplicationObjectSupport。该类提供getApplicationContext()方法,方便获取ApplicationContext。Spring初始化时,会通过setApplicationContext(ApplicationContext context)方法将ApplicationContext对象注入。

方法四:继承自抽象类WebApplicationObjectSupport。类似方法三,调用getWebApplicationContext()获取WebApplicationContext。

方法五:实现接口ApplicationContextAware。实现setApplicationContext(ApplicationContext context)方法并保存ApplicationContext对象。Spring初始化时,通过该方法将ApplicationContext对象注入。

方法六:通过Spring提供的ContextLoader。这是一种不依赖servlet、无需注入获取Spring容器的方法,但注意在服务器启动时不能获取Spring容器,详情请查阅Spring源码org.springframework.web.context.ContextLoader。

在使用方法三、四、五时,需确保实现了相应类或接口的普通Java类在Spring配置文件applicationContext.xml中进行了配置,否则获取的ApplicationContext对象将为null。方法六提供了不依赖servlet的获取方式,但需留意服务器启动时的限制。
温馨提示:内容为网友见解,仅供参考
无其他回答

spring如何获取bean的6种方法,你知道几个?
方法一:在初始化时保存ApplicationContext对象。适用于采用Spring框架的独立应用程序,需通过配置文件手工初始化Spring。方法二:利用Spring提供的工具类获取ApplicationContext对象。适合于采用Spring框架的B\/S系统,通过ServletContext对象获取ApplicationContext,再通过它获取所需类实例。与方法一的区别在于,前者在...

spring如何获取bean的6种方法,你知道几个?
获取Bean的方式多样,其中,最常见的是通过初始化时保存ApplicationContext对象,适用于手动配置Spring的独立应用。另一种是利用Spring工具类,适用于Web应用,通过ServletContext获取ApplicationContext,避免了初始化失败时的异常处理。抽象类ApplicationObjectSupport和WebApplicationObjectSupport提供了方便的ApplicationC...

Spring中获取bean的方式
1.1 方式一:根据id获取 由于id属性指定了bean的唯一标识,因此可以通过bean标签的id属性精确地获取到一个组件对象。如开头中我们使用的就是这种方式。bean标签属性:1.2 方式二:根据类型获取 这种用法较为常见。注意:1.3 方式三:根据id和类型 第三种方式似乎有些鸡肋。可能是因为单纯通过id获取需要...

快速了解获取Spring Bean的8种方式
1. ClassPathXmlApplicationContext: 通过从src\/main\/resources路径加载XML配置文件,创建ApplicationContext实例来获取bean。例如,先定义xml配置,然后在Java类中通过指定配置文件路径获取bean。2. ApplicationContext接口: 在Spring Boot项目中,通过启动后自动获取容器中的bean,需要bean有注解以便注入。3. Appl...

Spring获取Bean的9种方式
获取Bean的方式包括:通过BeanFactory(过时): 早期基于XML配置,不推荐,因为它已被注解和ApplicationContext替代。BeanFactoryAware接口: 通过实现接口获取BeanFactory,但带有BeanFactory的缺点。启动时获取ApplicationContext: 在项目启动时存储ApplicationContext,有基于XML和Spring Boot两种方式。ApplicationObject...

spring获取bean的几种方式
第一种:使用构造器实例化Bean,这是最简单的方式采用Spring IoC容器 第二种:使用静态工厂方式实例化Bean,这种需要必须的class属性外,还需要factory-method属性 第三种:使用实例工厂方法实例化Bean,工厂模式应该都知道,比较常用的一种模式 第四种:用 setter 方式,需要写上set、get方法,然后再xml...

Spring从容器中获取bean对象可以分别通过什么接口?
方法一:在初始化时保存ApplicationContext对象new ClassPathXmlApplicationContext("applicationContext.xml").getBean("beanId");这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的配置信息。方法二:通过Spring提供的工具类获取ApplicationContext对象import org.springframework....

普通Java类获取spring 容器的bean的5种方法
在普通Java类中实现这五种方法获取Spring容器的bean,必须确保在Spring的配置文件application-context.xml中对相应的类或接口进行配置,否则获取的ApplicationContext对象将为null。实现ApplicationContextAware接口的示例代码如下:应用context.xml文件配置:通常情况下,容器中的bean都是singleton类型的。然而,在使用...

Spring 容器获取 Bean 的 9 种方式 | 京东云技术团队
在Spring框架的广泛应用中,有时需要直接获取到IoC容器管理的Bean,而非依赖于注解或配置。本文汇总了获取Bean的九种常见方法,包括优劣势分析,帮助您在实际场景中做出选择。这些方式主要围绕Spring的BeanFactory和ApplicationContext展开。BeanFactory是IoC容器的核心,主要负责Bean的实例化和依赖关系管理。

Spring 注入 Bean 的 7 种方式,还有谁不会?
我们的项目一般很大的话,就需要成千上百个Bean去使用,这样写起来就很繁琐。那么Spring就帮我们实现了一种通过注解来实现注入的方法。只需要在你需要注入的类前面加上相应的注解,Spring就会帮助我们扫描到他们去实现注入。xml扫描包的方式 一般情况下,注入Bean有一个最直白,最易懂的方式去实现注入,...

相似回答
大家正在搜