ItGo.me - 专注IT技术分享

首页 > Spring > spring配置 > Java中Spring获取bean方法小结

Java中Spring获取bean方法小结

时间:2016-07-25来源:网友分享 点击:

本篇内容主要为大家讲解的是Java中Spring获取bean方法小结。感兴趣的同学可以参考学习下,具体内容如下:

这里有新鲜出炉的Java函数式编程,程序狗速度看过来!

Java程序设计语言java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。


Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,如何在程序中获取Spring配置的bean呢?下面通过本文给大家介绍Java中Spring获取bean方法小结,对spring获取bean方法相关知识感兴趣的朋友一起学习吧

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,如何在程序中获取Spring配置的bean呢?

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

对于两者的用途,我们可以进行简单划分:BeanFactory是Spring框架的基础设施,面向Spring本身;ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合我们都直接使用ApplicationContext而非底层的BeanFactory。

ApplicationContext的初始化和BeanFactory有一个重大的区别:BeanFactory在初始化容器时,并未实例化Bean,直到第一次访问某个Bean时才实例目标Bean;而ApplicationContext则在初始化应用上下文时就实例化所有单实例的Bean。因此ApplicationContext的初始化时间会比BeanFactory稍长一些

本文不涉及通过 @Resource 、 @Autowired 自动注入,仅仅通过 ApplicationContext 获取 Sping 配置文件中的 Bean 。

要获取XML中配置的Bean,最关键的是获取org.springframework.context.ApplicationContext

第一种获取 ApplicationContext 的方法:

import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; ApplicationContext applicationContext = new FileSystemXmlApplicationContext("applicationContext.xml");

或者

import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; private ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

这种方式实例化applicationContext是非常耗时的,这种方式适用于采用Spring框架的独立应用程序,仅仅推荐使用在程序需要通过配置文件手工初始化Spring的情况。ApplicationContext的主要实现类是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默认从类路径加载配置文件,后者默认从文件系统中装载配置文件

例子:

public class BeanManager { private static ApplicationContext context = new ClassPathXmlApplicationContext("appcontext.xml") ; public static Object getBean(String beanId) { return context.getBean(beanId); } }

在 web.xml 中写一个 servlet ,自动启动, init 方法中调用一下 BeanManager

init() throws ServletException { BeanManager bm = new BeanManager();//可选的,为的是在 web 应用启动的时候就让 spring 加载 bean 配置。 // 否则会在第一次调用 BeanManager 的时候加载,影响一次速度。 }

在 java 代码中使用 BeanManager.getBean(String beanId); 来获得 bean 实例。

第二种获取 ApplicationContext 的方法: 通过Spring提供的工具类获取ApplicationContext对象,专为web工程定制的方法,推荐Web项目中使用。例如:

ServletContext servletContext = request.getSession().getServletContext(); ApplicationContext ac1 = WebApplicationContextUtils .getRequiredWebApplicationContext(ServletContext sc) ApplicationContext ac2 = WebApplicationContextUtils .getWebApplicationContext(ServletContext sc) ac1.getBean("beanId"); ac2.getBean("beanId");

通过javax.servlet.ServletContext 获取到ApplicationContext实例对象,这意味着,必须使用到request、session等等。

这样,就不能把ApplicationContext对象设置为成员变量。需要在每个具体的方法中通过request、session等获取到ServletContext再获取ApplicationContext实例。

因此,此方法仅仅推荐使用在可以获取到ServletContext对象的Web项目中,并且不需要将ApplicationContext对象定义为成员变量的情况下。


[Java面试五]Spring总结以及在面试中的一些问题.

1.谈谈你对spring IOC和DI的理解,它们有什么区别? IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建...

JTable内容居中显示

1. 软件版本阶段说明* Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流...

Mybatis 分页插件 3.6.3 发布

Mybatis分页插件 - PageHelper 如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。 该插件目前支...

本篇内容主要为大家讲解的是Java中Spring获取bean方法小结。感兴趣的同学可以参考学习下,具体内容如下:
------分隔线----------------------------