`
ayufox
  • 浏览: 273765 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

读书笔记——Spring扩展点

阅读更多

<!----><!----> <!---->

<!---->Ø  <!---->BeanPostProcessors :该扩展点允许用户在 Bean 被实例化之后做一些修改,自动对对象进行 AOP 就是通过这种方式来实现的

<!---->Ø  <!---->BeanFactoryPostProcessors :该扩展点允许用户在 Bean 被实例化之前对配置做修改,譬如 Spring 中提供的 PlaceHolder 的处理

 

看看目前系统中应用 <!---->BeanFactoryPostProcessors 做的一个扩展功能

一般配置:

public @Service() class UcdServiceImpl implements IUcdService
{
	public void setSyncUserInfoService(ISyncUserInfoService syncUserInfoService)
	{
		this.syncUserInfoService = syncUserInfoService;
	}

 通过@Service的声明,系统自动向Spring的IOC容器注册了UcdServiceImpl这个类,而syncUserInfoService将自动通过名字进行注入,此时是一系列的默认规则在起作用(COC)。然后现在我们希望改变默认规则,注入一个syncUserInfoService的异步实现,则可以通过在配置文件中置入下面的代码,同时我们向系统注册了一个 <!---->BeanFactoryPostProcessor的实现,该实现根据如下的配置修改了默认的注入规则

 

<config:setBean bean="ucdService">
	<config:setProperty name="syncUserInfoService"
				ref="syncUserInfoServiceAsyn" />
</config:setBean>
 

注意:在实际代码中UcdServiceImpl有很多的属性必须注入,而大部分的属性使用默认的注入规则即可满足要求(根据名字注入),而这种方式能够处理在少数情况下我们需要对某些注入规则做变化的特殊需求

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics