文档章节

Spring :使用ApplicationContextAware接口<lookup-method>

蜡笔小小小新
 蜡笔小小小新
发布于 2015/03/14 21:33
字数 341
阅读 16
收藏 0
点赞 0
评论 0
/**
*使用ApplicationContextAware接口
*/
package exm.spring.bean;

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

public class Service implements ApplicationContextAware {
	
	private ApplicationContext applicationContext;

	public ApplicationContext getApplicationContext() {
		return applicationContext;
	}
	
	public User createUser()
	{
		User user = applicationContext.getBean("user", User.class);
			
		return user;
	}

	/**
	 * 实现该方法为了在该bean内获得容器
	 */
	@Override
	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		
		this.applicationContext = applicationContext;
		
	}

}

/**
*使用抽象类
*/
package exm.spring.bean;

public abstract class AbstractService {
	
	//抽象bean无法配置。如果要配置需要配置<lokup-method>子标签,spring容器将自动实现该abstract方法
	public abstract User createUser();

}

<!-- 配置文件 -->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:p="http://www.springframework.org/schema/p"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
        
        
        <!-- 下面配置相当于:
        
        		让spring创建AbstractService的子类,并实现createUser方法,
        		让外部请求得到userFromAbstractService
        
         -->
        <bean id="userFromAbstractService" class="exm.spring.bean.User" scope="prototype"/>
        
        <bean id="abstractService" class="exm.spring.bean.AbstractService" >
        	<lookup-method name="createUser" bean="userFromAbstractService"/>
        </bean>
        
</beans>


© 著作权归作者所有

共有 人打赏支持
蜡笔小小小新
粉丝 32
博文 104
码字总数 75210
作品 0
深圳
后端工程师
Spring IOC 容器源码分析系列文章导读

1. 简介 Spring 是一个轻量级的企业级应用开发框架,于 2004 年由 Rod Johnson 发布了 1.0 版本。经过十几年的迭代,现在的 Spring 框架已经非常成熟了。Spring 包含了众多模块,包括但不限于...

coolblog ⋅ 05/30 ⋅ 0

Spring中Bean的生命周期及其扩展点

Spring中Bean的管理是其最基本的功能,根据下面的图来了解Spring中Bean的生命周期: 解说: (1)BeanFactoryPostProcessor的postProcessorBeanFactory()方法:若某个IoC容器内添加了实现了B...

超人归来007 ⋅ 06/10 ⋅ 0

Spring的方法注入

当一个Bean依赖的Bean和自己生命周期不同的时候:如Bean A依赖Bean B,Bean A 是singleton,如果需要在Bean A每次用到Bean B的时候都用一个Bean B的新的实例,通过在配置文件中通过 property或者...

晨曦之光 ⋅ 2012/04/25 ⋅ 0

通过ApplicationContextAware获取spirng容器里面的bean

一、实现 1、ApplicatinContextHelper 2、spring 配置 二、原理 ApplicatinContextHelper继承了spring的ApplicationContextAware接口,并实现了setApplicatinContext方法spring容器在启动过程...

漂泊者及其影子 ⋅ 2016/09/08 ⋅ 1

普通Java类获取spring 容器的bean的5种方法

普通Java类获取spring 容器的bean的5种方法 方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的工具类获取ApplicationContext对象 方法三:继承自抽象类ApplicationOb...

宿小帅 ⋅ 2016/10/11 ⋅ 0

Spring 4.2 方法注入解决单例Bean的原型Bean依赖问题

当你在单例Bean中使用原型Bean依赖时,注意,依赖在实例化时解析。因此,如果你依赖注入一个原型Bean到单例Bean中,新的原型Bean被实例化然后依赖注入到单例Bean中。提供给单例Bean的原型实例...

Leech ⋅ 2015/09/23 ⋅ 0

Spring容器中Bean的生命周期

Spring中bean的生命周期相对于传统的Java应用中bean的生命周期要复杂一点,bean从创建到销毁,要经过如下几个步骤: 初始化bean。 填充属性:Spring将bean的依赖注入到bean的属性中。 如果b...

一书生 ⋅ 2016/05/20 ⋅ 0

Spring 4.2 感知接口

1 ApplicationContextAware 当一个ApplicationContext创建一个实现org.springframework.context.ApplicationContextAware接口的实例时,为实例提供一个ApplicationContext引用。 public int......

Leech ⋅ 2015/08/07 ⋅ 1

Bean在Spring容器中的生命周期

配置在Spring中的Bean在Spring容器中从加载到销毁会经历那些过程呢?如果实现一些特定的Spring接口,这些特定接口的方法会在什么时候被调用呢?本文简单介绍一下这些过程. Bean在Spring容器中的...

晨曦之光 ⋅ 2012/04/25 ⋅ 0

Spring AOP中自我调用的问题

前几天在做项目的时候同事说,在使用AOP进行拦截的时候发现有些方法有时候能输出拦截的日志有时候不输出拦截的日志。发现在单独调用这些方法的时候是有日志输出,在被同一个类中的方法调用的...

木叶之荣 ⋅ 2017/05/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

编译安装apache2.4.33

1. 环境 编译安装apache2.4.33,错误 error: ld returned 1 exit status。 CentOS 7.2apr-1.6.3apr-util-1.6.1httpd-2.4.33 2. 编译报错 编译安装完 apr apr-util 之后,安装httpd-2.4.3......

周云台 ⋅ 12分钟前 ⋅ 0

jsonrpc-4j代码解析

解析文件 AutoJsonRpcServiceImplExporter JsonServiceExporter AutoJsonRpcServiceImplExporter 路径:com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImplExporter AutoJsonRpcServi......

郭恩洲_OSC博客 ⋅ 21分钟前 ⋅ 0

百度搜索

from selenium import webdriver import time brower=webdriver.Firefox() brower.get('http://www.baidu.com') input=brower.find_element_by_id('kw') input.send_keys('中南大学') time.s......

南桥北木 ⋅ 27分钟前 ⋅ 0

tomcat 日志记录器

1、日志记录器是记录消息的组件 日志记录器需要与某个servlet 容器相关联 2、Logger 接口 共定义了5种日志级别:FATAL、ERROR、WARNING、INFORMATION、DEBUGGER setVerbosity 设置级别 setC...

职业搬砖20年 ⋅ 29分钟前 ⋅ 0

Thrift RPC实战(三) Thrift序列化机制

1.Thrift基础架构 Thrift是一个客户端和服务端的架构体系,数据通过socket传输; 具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports); 通过IDL脚本对传输数据的数据结构...

lemonLove ⋅ 29分钟前 ⋅ 0

网站建设就要像2018世界杯的俄罗斯队大杀四方[图]

今天心情不错,因为昨天晚上观看了世界杯比赛,尤其是对俄罗斯队的大杀四方感到十分霸气侧漏啊,因此我联想到了自己的博客网站,我的博客是去年年底上线的,一直想建设一个关于读书和读后感作...

原创小博客 ⋅ 38分钟前 ⋅ 0

Greenplum 三节点安装教程(非root用户)

Greenplum 三节点安装教程(非root用户) 环境准备 安装vmware,装三台centos 虚拟机设置: 主机名 IP 内存 硬盘 node1 Xxx1 2G 80G node2 Xxx2 2G 80G node3 Xxx3 2G 80G CSDN下载greenplum...

仔仔1993 ⋅ 38分钟前 ⋅ 0

linux 信号机制

signal(SIGPIPE, SIG_IGN); TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协...

xxdd ⋅ 39分钟前 ⋅ 0

SpringWind

环境搭建和系统部署

颖伙虫 ⋅ 58分钟前 ⋅ 0

vim命令用法

第五章 vim命令 vim和vi几乎是一样的,唯一的区别就是当编辑一个文本时,使用vi不会显示颜色,而使用vim会显示颜色。 vim有三个模式:一般模式,编辑模式,命令模式。 系统最小化安装时没有安...

弓正 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部