`

Spring Bean管理

 
阅读更多
from:  http://blog.csdn.net/a9529lty/article/details/42145545

如何取得Spring管理的bean  (请用第3种方法):

1、servlet方式加载时,【web.xml】Xml代码

<servlet> 
<servlet-name>springMVC</servlet-name> 
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
<init-param> 
<param-name>contExtConfigLocation</param-name> 
<param-value>classpath*:/springMVC.xml</param-value> 
</init-param> 
<load-on-startup>1</load-on-startup> 
</servlet> 
spring容器放在ServletContext中的key是org.springframework.web.servlet.FrameworkServlet.CONTEXT.springMVC
注意后面的springMVC,是你的servlet-name配置的值,注意适时修改。

Java代码
ServletContext sc=略 
WebApplicationContext attr = (WebApplicationContext)sc.getAttribute("org.springframework.web.servlet.FrameworkServlet.CONTEXT.springMVC"); 

2、listener方式加载时:【web.xml】Xml代码

<context-param> 
  <param-name>contextConfigLocation</param-name> 
  <param-value>/WEB-INF/applicationContext</param-value> 
</context-param> 
 
<listener> 
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
【jsp/servlet】可以这样取得

Java代码
ServletContext context = getServletContext(); 
WebApplicationContext applicationContext  = WebApplicationContextUtils .getWebApplicationContext(context);  

3、通用的方法来了,神器啊,前的  1、2两种方法并不通用,可以抛弃了。
在配置文件中加入:Xml代码

<!-- 用于持有ApplicationContext,可以使用SpringContextHolder.getBean('xxxx')的静态方法得到spring bean对象 --> 
<bean class="com.xxxxx.SpringContextHolder" lazy-init="false" /> 

Java代码
import org.springframework.context.ApplicationContext; 
import org.springframework.context.ApplicationContextAware; 
/**
* 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext.

*/ 
public class SpringContextHolder implements ApplicationContextAware { 
private static ApplicationContext applicationContext; 
 
/**
* 实现ApplicationContextAware接口的context注入函数, 将其存入静态变量.
*/ 
public void setApplicationContext(ApplicationContext applicationContext) { 
SpringContextHolder.applicationContext = applicationContext; // NOSONAR 

 
/**
* 取得存储在静态变量中的ApplicationContext.
*/ 
public static ApplicationContext getApplicationContext() { 
checkApplicationContext(); 
return applicationContext; 

 
/**
* 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
*/ 
@SuppressWarnings("unchecked") 
public static <T> T getBean(String name) { 
checkApplicationContext(); 
return (T) applicationContext.getBean(name); 

 
/**
* 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
*/ 
@SuppressWarnings("unchecked") 
public static <T> T getBean(Class<T> clazz) { 
checkApplicationContext(); 
return (T) applicationContext.getBeansOfType(clazz); 

 
/**
* 清除applicationContext静态变量.
*/ 
public static void cleanApplicationContext() { 
applicationContext = null; 

 
private static void checkApplicationContext() { 
if (applicationContext == null) { 
throw new IllegalStateException("applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder"); 


}
分享到:
评论

相关推荐

    Spring bean 管理

    Spring框架是Java企业级应用开发的事实标准,它通过依赖注入(DI)和面向切面编程(AOP)来...需要注意的是,无论是哪种方式,理解Spring Bean管理的原理和生命周期,对于开发高质量的Java企业级应用都是必不可少的。

    Spring Bean管理注解方式代码实例

    Spring Bean 管理注解方式代码实例 Spring Bean 管理注解方式代码实例是 Spring 框架中的一种常见的 Bean 管理方式。通过使用注解的方式,可以简化 Bean 的配置和管理过程。这篇文章将详细介绍 Spring Bean 管理...

    spring bean的生命周期

    - **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...

    spring bean XML配置入门

    在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...

    Spring Bean创建初始化流程.docx

    整个流程中,Spring不仅创建了Bean,还管理了Bean的生命周期,包括依赖注入、初始化和销毁等。这种自动化管理使得开发者可以专注于业务逻辑,而不用关心对象的创建和管理细节。Spring的IoC容器使得应用更加灵活和...

    Spring Bean重复执行两次(实例被构造两次)问题分析

    在Spring框架中,Bean的生命周期管理是其核心特性之一,然而有时我们可能会遇到Spring Bean重复执行两次的问题,即实例被构造两次。这个问题可能是由多种原因引起的,涉及到Spring的初始化过程和容器的行为。以下是...

    普元eos-springbean开发

    SpringBean是Spring框架的核心概念之一,它是Spring IoC容器管理的对象。在普元EOS平台中,SpringBean同样扮演着重要角色,用于封装业务逻辑、数据访问等功能。通过合理地设计和配置SpringBean,可以极大地提高开发...

    spring bean life cycle

    总的来说,Spring Bean生命周期的理解和灵活运用,能帮助我们更好地控制Bean的行为,实现更高效、更可控的依赖管理和资源管理。通过深入学习源码,我们可以进一步了解Spring如何实现这些功能,从而提升我们的开发...

    spring bean 属性总结

    在Spring中,核心概念之一就是Bean,它是一个简单的Java对象,由Spring IoC容器管理。Spring通过XML配置文件或注解来定义、配置和管理Beans。下面将深入探讨`&lt;beans&gt;`、`&lt;bean&gt;`及其属性,以及其他相关的配置元素。 ...

    实例化Spring bean的两种工厂方法

    在Spring框架中,bean的实例化是其核心功能之一,它允许我们管理应用程序中的对象生命周期。本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念...

    springBean加载过程源码解析文档,附有代码类名和行数

    在 Spring Boot 应用程序中,SpringApplication 负责加载和管理 Bean。 SpringApplication 初始化 在 SpringApplication 运行之前,首先需要初始化 SpringApplication 实例。这个过程中,SpringApplication 会创建...

    Spring Bean 加载顺序 .

    对于Prototype作用域的Bean,Spring不会自动管理销毁,需要由用户负责。 在实际应用中,理解这些步骤有助于优化Bean的加载和管理,避免依赖问题,提高应用性能。例如,通过调整Bean的加载顺序,可以控制某些服务的...

    java *spring工具类 方便在非spring管理环境中获取bean

    java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...

    spring bean的生命周期测试代码

    在Spring框架中,Bean的生命周期管理是其核心特性之一,它允许开发者控制Bean从创建到销毁的整个过程。本资源提供了在Spring 4.2环境下关于Bean生命周期的测试代码,帮助我们深入理解这一关键概念。 首先,让我们...

    SpringBean的生命周期.mdj

    SpringBean的生命周期.mdj

    Spring Bean基本管理实例详解

    主要介绍了Spring Bean基本管理,以实例形式较为详细的分析了Spring Bean的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    Spring Bean简单应用实例

    Spring通过IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)来管理这些Bean。在这个"Spring Bean简单应用实例"中,我们将深入理解这两个概念以及如何在实际应用中使用它们。 首先,...

    Spring的Bean配置

    在Spring中,Bean是应用中的对象,它们由Spring IoC容器负责创建、管理和装配。Bean配置是定义这些对象如何被创建和如何相互关联的过程。 **IoC(Inversion of Control)和DI(Dependency Injection)**: IoC是...

    Spring实例化Bean顺序

    在Spring框架中,Bean的实例化顺序是一个关键概念,它涉及到如何管理和协调多个Bean的创建与依赖关系。这里,我们主要探讨的是Spring如何通过其IoC(Inversion of Control)容器来实例化Bean,并理解其背后的逻辑。 ...

    Spring中关于Bean的管理的课件

    在Spring框架中,Bean的管理是其核心特性之一,它涉及到Bean的创建、初始化、装配以及销毁等整个生命周期过程。本课件主要涵盖了以下几个关键知识点: 1. **控制反转(IoC)和依赖注入(DI)**:Spring的核心设计...

Global site tag (gtag.js) - Google Analytics