Spring :使用ApplicationContextAware接口<lookup-method>
Spring :使用ApplicationContextAware接口<lookup-method>
蜡笔小小小新 发表于3年前
Spring :使用ApplicationContextAware接口<lookup-method>
  • 发表于 3年前
  • 阅读 15
  • 收藏 0
  • 点赞 0
  • 评论 0
摘要: 这是一个使用ApplicationContextAware接口 使用<lookup-method>子元素的实例: 1、当一个作用域为singleton的bean需要每次都依赖全新的另外一个bean,而另外一个bean的作用域是prototype 不仅无法每次获得一个全新的bean,而且作用域是prototype的bean将变的和singleton作用域一样 2、实现ApplicationContextAware的bean可以在自身获取spring容器, 在通过容器每次请求动态地获取一个全新的依赖bean 3、配置了<lookup-method>子元素的bean需要时abs...
/**
*使用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>


共有 人打赏支持
粉丝 29
博文 112
码字总数 79661
×
蜡笔小小小新
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: