文档章节

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

蜡笔小小小新
 蜡笔小小小新
发布于 2015/03/14 21:33
字数 341
阅读 16
收藏 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
博文 114
码字总数 75210
作品 0
深圳
后端工程师
Spring IOC 容器源码分析系列文章导读

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

coolblog
05/30
0
0
Spring 4.2 感知接口

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

Leech
2015/08/07
0
1
Spring中Bean的生命周期及其扩展点

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

超人归来007
06/10
0
0
spring Bean 生命周期

spring中Bean的生命周期 实例化----》填充属性-------》调用BeanNameAware的setBeanName()方法-------》调用BeanFactoryAware的 setBeanFactory()方法---------》调用ApplicationContextA...

地瓜2013
2014/04/21
0
0
Spring的方法注入

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

晨曦之光
2012/04/25
650
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud Gateway真的有那么差吗?

前言 Spring Cloud从一开始最受大家质疑的就是网关性能,那是由于Spring Cloud最初选择了使用Netflix几年前开源的Zuul作为基础,而高性能版的Zuul 2在经过了多次跳票之后,对于Spring这样的整...

Java小铺
33分钟前
1
0
SpringBoot远程调试,远程debug你的线上项目

开发环境中代码出错了,可以利用IDE的debug功能来进行调试。那线上环境出错呢? 一、假设我们的项目是部署在tomcat中,那我们就需要对tomcat进行一定对配置,配置如下。 1. windows系统中,找...

nonnetta
38分钟前
0
0
JAVA秒杀优化方向

秒杀优化方向 将请求尽量拦截在系统上游:传统秒杀系统之所以挂,请求都压倒了后端数据层,数据读写锁冲突严重,几乎所有请求都超时,流量虽大,下单成功的有效流量甚小,我们可以通过限流、...

小贱是个程序员
45分钟前
0
0
C# 统计字符串中大写字母和小写字母的个数

static void Main() { int count1 = 0; int count2 = 0; Console.WriteLine("请输入字符串"); string str = Convert.ToString(Consol......

熊二的爸爸是谁
47分钟前
0
0
分布式服务框架之远程通讯技术及原理分析

在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是...

老道士
53分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部