spring-从普通java类取得注入spring Ioc容器的对象的方案

1.启动服务时通过spring容器的监听器(继承ContextLoaderListener 监听器的方法)

public class ListenerSpringContext extends ContextLoaderListener {
    private final Logger log = LoggerFactory.getLogger(ListenerSpringContext.class);

    public void contextInitialized(ServletContextEvent event) {
        log.info("init ListenerSpringContext...");
        super.contextInitialized(event);
        ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());
     //自己手动保留一个spring注入的容器
        UtilsSpringContext.setApplicationContext(applicationContext);
    }

}

2.实现appctionContextaware的方法

package com.ceopen.eoss.spring;  

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;  

public class SpringUtil implements ApplicationContextAware {  

    private static ApplicationContext applicationContext;  

    @Override
    public void setApplicationContext(ApplicationContext context)
        throws BeansException {
        SpringUtil.applicationContext = context;
    }
    public static Object getBean(String name){
        return applicationContext.getBean(name);
    }
}  

将SpringUtil注入spring配置文件

<bean id="spring" class="com.ceopen.eoss.spring.SpringUtil" />  

获取

ICBMission icbMission = (ICBMission)SpringUtil.getBean("ICBMission");  
时间: 2024-08-04 10:42:19

spring-从普通java类取得注入spring Ioc容器的对象的方案的相关文章

java多线程中注入Spring对象问题

web应用中java多线程并发处理业务时,容易抛出NullPointerException. 原因: 线程中的Spring Bean没有被注入.web容器在启动时,没有提前将线程中的bean注入,在线程启动之前,web容器是无法感知的. 解决方案: 方法一.在声明成员变量的时候,将其定义为static的.(据说不可行) 方法二.将线程设置为主程序的内部类. 在外部类中注入bean,这样在内部类线程中就可以“共享”这个对象. 方法三.定义一个工具类,使用静态工厂方法通过getBean获得bean对

在spring中直接在类中注入dao

描述:在ssm项目中直接在类中注入dao private static Dao dao = SpringContextHolder.getBean(Dao.class); 原文地址:https://www.cnblogs.com/zhouheblog/p/11008090.html

Spring 4.x Reference翻译(一)IOC容器

1.IOC容器 本章对Spring Framework的IOC实现.IoC也就是依赖注入(DI).依赖注入的过程是这样的,对象只通过构造函数参数.工厂方法参数或者属性来定义它们的依赖:当容器创建好一个对象之后,它会注入对象定义的这些依赖.这个过程就是控制反转,因为它相对于bean自己控制实例化或自己调用依赖类的构造函数(或者使用Service Locator之类的模式)来说是相反的. 包org.springframework.beans和org.springframework.context是S

理解PHP 依赖注入|Laravel IoC容器

看Laravel的IoC容器文档只是介绍实例,但是没有说原理,之前用MVC框架都没有在意这个概念,无意中在phalcon的文档中看到这个详细的介绍,感觉豁然开朗,复制粘贴过来,主要是好久没有写东西了,现在确实很懒变得! 首先,我们假设,我们要开发一个组件命名为SomeComponent.这个组件中现在将要注入一个数据库连接. 在这个例子中,数据库连接在component中被创建,这种方法是不切实际的,这样做的话,我们将不能改变数据库连接参数及数据库类型等一些参数. 01 <?php 02   0

java类内存中只能运行一个实例对象

方法:构造方法私有化(private) public class TestClass { private static TestClass obj = new TestClass (); //私有构造方法 private TestClass () { } public static TestClass getInstance() { return obj ; } } 使用: TestClass obj = TestClass.getInstance();

理解 PHP 依赖注入 | Laravel IoC容器

Laravel框架的依赖注入确实很强大,并且通过容器实现依赖注入可以有选择性的加载需要的服务,提高初始化框架的开销,下面是我在网上看到的一个帖子,写的很好拿来与大家分享,文章从开始按照传统的类设计数据库连接一直到通过容器加载服务这个高度解耦的设计展示了依赖注入的强大之处,值得我们借鉴和学习. -----------------------------------------------------------分割线下面是大牛的原文---------------------------------

Spring(二):AOP(面向切面编程),Spring的JDBC模板类

1 AOP概述 1.2 什么是AOP 在软件业,AOP为Aspect Oriented Programmig的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. AOP解决了OOP遇到一些问题,采取横向抽取机制,取代了传统

Spring-----3、Spring的核心机制:依赖注入

纵观所有Java应用(从基于Applet的小应用到多层结构的企业级应用),他们都是一种典型的依赖型应用,也就是由一些互相协作的对象构成的.Spring把这种互相协作的关系称为依赖关系.如A组件调用B组件的方法,可称A组件依赖于B组件依赖注入让Spring的Bean以配置文件组织在一起,而不是以硬编码的方式耦合在一起 一.理解依赖注入 依赖注入(Dependency Injection) = 控制反转(Inversion ofControl,IoC):当某个Java实例(调用者)需另一个Java实

Spring的核心机制:依赖注入

对于一般的Java项目,他们都或多或少有一种依赖型的关系,也就是由一些互相协作的对象构成的.Spring把这种互相协作的关系称为依赖关系.如A组件调用B组件的方法,可称A组件依赖于B组件,依赖注入让Spring的Bean以配置文件组织在一起,而不是以硬编码的方式耦合在一起 一.理解依赖注入 依赖注入(Dependency Injection) = 控制反转(Inversion ofControl,IoC):当某个Java实例(调用者)需另一个Java实例(被调用者)时,在依赖注入模式下,创建被调