`

获得spring 的bean

 
阅读更多
一.servlet中
public class HrServlet extends HttpServlet {
    private ApplicationContext applicationContext = null;//定义全局变量context

    @Override
    public void init(ServletConfig config) throws ServletException {
        ServletContext servletContext = config.getServletContext();
        applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
    }

    /**
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HrService hrService = (HrService) applicationContext.getBean("hrService");
        String dname = req.getParameter("dname");
        Dept dept = null;
        try {
            dept = hrService.getRecord(dname);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        System.out.println("dept1 = " + dept);
    }
}


二.普通java类中
传统的方法
ApplicationContext context = new ClassPathXmlApplicationContext();

浪费内存,偶尔在 main方法里用一下还可以。

推荐的用法:

1:创建一个类并让其实现org.springframework.context.ApplicationContextAware接口来让Spring在启动的时候为我们注入ApplicationContext对象.
/**
 * User: liuwentao
 * Time: 11-7-21 下午3:55
 * <p/>
 * 说明:
 */
public class MyApplicationContextUtil implements ApplicationContextAware {
    private static ApplicationContext context;//声明一个静态变量保存

    /**
     *
     * @param contex
     * @throws BeansException
     */
    public void setApplicationContext(ApplicationContext contex) throws BeansException {
        this.context = contex;
    }

    public static ApplicationContext getContext() {
        return context;
    }
}


2:在applicationContext.xml文件中配置此bean,以便让Spring启动时自动为我们注入ApplicationContext对象.
<bean class="demo.MyApplicationContextUtil"></bean>


3:在普通java类中调用
HrService hrService = (HrService) MyApplicationContextUtil.getContext().getBean("hrService");


分享到:
评论

相关推荐

    spring运行过程中动态注册bean

    然后,通过调用`getBeanFactory()`方法,我们可以得到`DefaultListableBeanFactory`类型的`BeanFactory`实例,这个实例是Spring容器内部管理Bean的真正场所。 ```java ConfigurableApplicationContext ...

    Java中Spring获取bean方法小结

    这里我们将详细探讨如何在Java中通过Spring获取配置的bean。 1. **BeanFactory与ApplicationContext** - **BeanFactory** 是Spring中最基础的IoC容器,负责管理和实例化Bean。它允许开发者定义Bean的生命周期和...

    获得spring里注册Bean的四种方法

    获得 Spring 里注册 Bean 的四种方法 在 Spring 框架中,获取已注册的 Bean 对象是非常重要的一步。下面将介绍四种获取 Spring 里注册 Bean 的方法。 方法一:继承 BaseDispatchAction 这种方法常用于 Struts ...

    Spring在应用中获得Bean的方法

    在Spring框架中,管理Bean是其核心功能之一。Bean是由Spring容器创建、初始化、装配以及管理的对象,它们在应用程序中扮演着重要的角色。本篇文章将深入探讨如何在Spring应用中获取Bean,以及相关的源码分析和实用...

    Spring bean为什么默认是单例

    同时,由于每次请求都能快速从缓存中获取Bean,因此响应速度也得到提升。 然而,单例Bean并非没有缺点。它的一个主要劣势是线程安全性。如果一个Bean是有状态的,即它包含可变的实例变量,那么在多线程环境中,多个...

    Spring_ClassPathResource获得bean对象

    本篇文章将深入探讨如何使用Spring的ClassPathResource来获取bean对象,并通过实例解析其工作原理。 首先,理解什么是类路径资源。类路径(Classpath)是Java运行环境用来查找类和其他资源的路径。当你在类路径下...

    java中获得spring中的BEAN

    本文将深入探讨如何在Java中获取Spring容器中的Bean,并通过具体的示例来讲解这一过程。 ### Spring框架概述 Spring框架是由Rod Johnson创建的一个开源项目,旨在简化Java企业级应用程序的开发。Spring的核心特性...

    在Servlet直接获取Spring框架中的Bean.docx

    一旦我们得到了ApplicationContext,就可以通过调用`getBean`方法来获取任何已定义的Bean了: ```java MyDao myDao = (MyDao) context.getBean("daoBeanName"); ``` 这里,"daoBeanName"是我们在Spring配置文件中...

    Spring实战之Bean的作用域singleton和prototype用法分析

    这意味着,如果多次从Spring容器中请求同一个`prototype` Bean,将会得到不同的对象。在配置文件中,`p2`被定义为`prototype` Bean,通过`scope="prototype"`指定。在`BeanTest`中,我们请求`p2`两次并进行比较,...

    Spring实战之获得Bean本身的id操作示例

    Spring实战之获得Bean本身的id操作示例 在Spring框架中,获取Bean本身的id操作是一种常见的需求。通过实现BeanNameAware接口,Spring容器会在创建Bean时自动调用setBeanName()方法,并将Bean的配置id作为参数传给该...

    Spring Boot技术知识点:Bean装配1

    在Spring框架中,Bean是一个由Spring容器管理的对象,它可以通过依赖注入(Dependency Injection,简称DI)来获得其依赖项。Spring Boot利用Java配置或XML配置来定义Bean,但更倾向于使用Java配置,因为它更加简洁且...

    Spring 源码分析(Bean的初始化)

    4. **单例管理**:对于单例模式的Bean,Spring会缓存其实例,确保后续请求得到的是同一个对象。 在整个初始化过程中,Spring通过一系列的回调接口和事件机制,使得开发者可以自定义Bean的生命周期行为,比如添加...

    JSP 中Spring Bean 的作用域详解

    每次从Spring容器中获取prototype作用域的Bean时,都会得到一个新的实例。这就意味着每次使用getBean()方法,都会创建一个新的Bean对象,从而允许开发者管理对象的完整生命周期,例如用于创建线程池或实现会话管理等...

    Java获取Spring中配置的Bean的三种方式

    在Java编程中,Spring框架是应用广泛的企业级开发工具,它提供了一种强大的依赖注入机制,使得开发者可以方便地管理并获取容器中的Bean。本文将详细介绍在Spring框架中获取配置Bean的三种主要方法。 1. **通过...

    Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等).doc

    在 Spring 框架中,Bean 的实例化是通过 BeanFactory 中的 getBean 方法来实现的,该方法根据 bean 的名字、Class 类型和参数等来得到 bean 实例。 在了解 Bean 的实例化过程之前,我们需要了解 Spring 框架中 IoC ...

    让spring解决控制springboot中bean的加载顺序的问题.docx

    此时,我们需要通过控制Bean的加载顺序来确保依赖关系得到满足。 2. 几个误区 误区一:认为在@Configuration类中@Bean方法的位置决定加载顺序。实际上,Bean的加载顺序并不由其在代码中的位置决定,而是由Spring的...

    spring-pluggable:实现 bean 插件的简单框架(可以在运行时自动将其他 bean 注入其中的 bean)

    然后,其他依赖于 `BaseService` 的 Bean(如 `ConsumerBean`)就可以在运行时得到正确的实现注入,无需显式地知道具体是哪个实现类。 在实际项目中,这可能涉及到以下步骤: 1. **定义插件接口**:创建一个公共...

    spring2.0升级到spring3.0.5的开发包

    4. **Spring MVC增强**:Spring Web MVC在3.0版本中得到了显著增强,包括支持RESTful风格的URL映射、支持异步请求处理、模板引擎集成(如FreeMarker、Thymeleaf)以及改进的视图解析。 5. **数据访问增强**:Spring...

    springIoc实现原理

    2. **Bean实例化**:根据BeanDefinition,Spring容器创建Bean实例,可以是单例或多例。 3. **依赖注入**:Spring容器根据BeanDefinition中的依赖关系,为Bean注入依赖对象。 4. **初始化**:Spring容器调用Bean的...

    spring-5.3.9-dist.zip(spring-framework-5.3.9)

    每个模块都有相应的jar包,例如`spring-context.jar`提供了上下文支持,`spring-beans.jar`处理bean的生命周期,而`spring-webmvc.jar`则用于构建Web应用程序。5.3.9版本的库可能包含了对Java 8及更高版本的支持,...

Global site tag (gtag.js) - Google Analytics