`

spring bean 不使用注入的方式获取的两种方式

阅读更多
非注入方式取得spring注入bean的util类实现

第一种,我用在webservice接口中。

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

/**
 * SpringBean的工具类<br>
 * 非注入方式取得spring注入bean的util类实现
 * @author langkai
 *
 */
public final class SpringBeanUtil implements ApplicationContextAware {

    private static ApplicationContext ctx;

    /**
     * 通过spring配置文件中配置的bean id取得bean对象
     * @param id spring bean ID值
     * @return spring bean对象
     */
    public static Object getBean(String id) {
        if (ctx == null) {
            throw new NullPointerException("ApplicationContext is null");
        }
        return ctx.getBean(id);
    }

	@Override
	public void setApplicationContext(ApplicationContext applicationcontext)
			throws BeansException {
		ctx = applicationcontext;
	}

}


实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入ApplicationContext的实例。

applicationContext.xml
<bean class="*.SpringBeanUtil"/>


这样在spring配置文件加载时会自动执行ApplicationContextAware的setApplicationContext方法,将applicationContext对象传递给我们的Util类。
SpringBeanUtil.getBean("myBean");

在某些时候我们不希望通过注入也能取得某些bean时有用。

PS:
Spring 中提供一些Aware相关接口,像是BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,这些 Aware接口的Bean在被初始之后,可以取得一些相对应的资源,例如实现BeanFactoryAware的Bean在初始后,Spring容器将会注入BeanFactory的实例,而实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入 ApplicationContext的实例等等。

内容转载至:http://www.myexception.cn/software-architecture-design/897135.html

================================
第二种,就是传统的Application程序使用的了。

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("springConfig_bus.xml");
		IMsgBusService client = (IMsgBusService) context.getBean("client");


分享到:
评论

相关推荐

    spring(一)–概念和历史/hellospring/IOC创建对象的方式/Spring配置/set注入/c命名和p命名空间注入/bean的作用域

    文章目录一、概念和历史二、hellospring三、IOC创建对象的方式四、Spring配置五、set注入–属性注入六、c命名和p命名空间注入七 、bean的作用域 一、概念和历史 Spring的形成,最初来自Rod Jahnson所著的一本很有...

    动态的装配bean,注入到Controller中

    有时候根据需求会动态的装配bean,注入到Controller中,现在提供两种方式: 一、xml文件配置方式,ApplicationContext.xml 二、@PostConstruct注解方式

    spring框架api中文版.zip(spring开发手册)

    有两种格式,一种和jdk的api一样,另一种是PDF格式,pdf部分目录如下: 即Spring框架的概述 1。 介绍Spring框架 1.1。 依赖注入和控制反转 1.2。 模块 1.2.1。 核心容器 1.2.2。 数据访问/集成 1.2.3。 web 1.2.4。 ...

    spring.doc

    4.2.2 AOP实现的两种模式 78 4.2.2.1 xml形式 78 XML形式拓展: 81 异常通知处理例子: 91 不用spring异常通知,另一种处理异常 96 4.2.2.2Aop注解形式(了解) 99 注解注入拓展: 103 5 Spring数据库 106 5.1 ...

    spring+SpringMVC+MyBatis

    在spring框架中你可以使用IOc三种方案 1 配置文件的注入 2 注解的方式注入 3 不需要配置文件注入 建立一个工具类使用注解的方式** 3. **在数据反问层中你可以使用的是MyBatis框架。在数据访问层中正对MyBatis框架有...

    高级开发spring面试题和答案.pdf

    两种动态代理的区别 AOP实现方式:aop注解或者xml配置;后来工具jar包aspects; aop的属性 事务 事务编码方式: 事务注意事项; 为什么同一个类A调用b方法事务,A方法一定要有事务(编码式的不用) @transaction多个...

    开源框架 Spring Gossip

    不使用XML定义档进行 Bean设置 Aware 相关介面 BeanPostProcessor BeanFactoryPostProcessor PropertyPlaceholderConfigurer PropertyOverrideConfigurer CustomEditorConfigurer ...

    springboot整合spring-kafka kafkaTemplate

    本项目里面简单写了单挑信息、批量信息的web接口测试消息发送,并且注入了两个bean,实现KafkaListener两种不同模式{containerFactory="batchFactory"},{containerFactory = "batchFactoryOff"}。

    Spring攻略(第二版 中文高清版).part1

    3.12 将Spring Bean注入领域对象 147 3.12.1 问题 147 3.12.2 解决方案 147 3.12.3 工作原理 148 3.13 小结 151 第4章 Spring中的脚本 152 4.1 用脚本语言实现Bean 152 4.1.1 问题 152 4.1.2 解决...

    Spring攻略(第二版 中文高清版).part2

    3.12 将Spring Bean注入领域对象 147 3.12.1 问题 147 3.12.2 解决方案 147 3.12.3 工作原理 148 3.13 小结 151 第4章 Spring中的脚本 152 4.1 用脚本语言实现Bean 152 4.1.1 问题 152 4.1.2 解决...

    Spring5参考指南:依赖注入

    Spring的依赖注入有两种基于构造函数的依赖注入和基于setter的依赖注入。构造函数的注入是通过构造函数的参数来实现的。如下所示:  该Bean有一个两个参数的构造函数,那么怎么注入这些参数呢? 有三种方法。方法1...

    精通Spring整合MyBatis:架构师的实践指南

    Spring和MyBatis的整合是Java开发中常见的架构模式,它提供了一种高效、灵活的方式来管理数据库操作和业务逻辑层。本文深入探讨了Spring和MyBatis整合的关键原理和实践要点,帮助架构师和开发者有效地利用这两个强大...

    第24次课-1 Spring与Hibernate的整合

    Spring通过ApplicationContext管理SessionFactory,可以不使用Hibernate应用必需的hibernate.cfg.xml。 Spring配置管理SessionFactory与数据库的连接,在实际的应用中,数据源会采用依赖注入的方式,传递给...

    Spring面试题

    spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。 设置注入的优点:直观,自然 构造注入的优点:可以在构造器中决定依赖关系的顺序。 什么是AOP? 面向切面编程(AOP)完善spring的...

    springMVC-annotation注解介绍

    @Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。 1、共同点 两者都可以写在字段和setter方法上。两者...

    ssh(structs,spring,hibernate)框架中的上传下载

    可以确定的一点是:BlobByteArrayType不可能逾越Blob天生的操作方式,原来是BlobByteArrayType数据类型本身具体数据访问的功能,它通过LobHandler将两次数据访问的动作隐藏起来,使Blob字段的操作在表现上和其他一般...

    springmybatis

    1. 在MyBatis 里面创建两个源码目录,分别为 src_user,test_src, 用如下方式建立,鼠标右键点击 JavaResource. 2. 设置mybatis 配置文件:Configuration.xml, 在src_user目录下建立此文件,内容如下: 程序代码 程序...

    JSP开发之Spring方法注入之替换方法实现

    打个比方我们有一个bean,其中拥有一个add()方法可以用来计算两个整数的和,但这个时候我们想把它的实现逻辑改为如果两个整数的值相同则把它们相乘,否则还是把它们相加,在不改变或者是不能改变源码的情况下我们就...

    java查看sun包源码-learning-spring:Spring框架讲解

    Spring提供了两种类型的IOC容器实现 BeanFactory:IOC容器的基本实现,在调用getBean()方法时才会实例化对象 ApplicationContext:提供了更多的高级特性,在加载配置文件后就会实例化对象。是BeanFactory的子接口 ...

    spring-boot-data-aggregator:基于注解实现并行地依赖注入(数据聚合),可以看做Spring Async注解的升级版

    下面的示例只有一层异常处理目前支持两种处理方式:忽略或终止忽略是指provider方法在执行时,忽略抛出的异常并返回null值;终止是指再次有一个provider方法抛出了异常,将逐级向上抛出,终止后续处理。配置支持...

Global site tag (gtag.js) - Google Analytics