2016-03-30 191 views
0

我正在使用裝飾器模式來裝飾具有緩存服務類的服務類。在春天自動裝飾裝飾器

沒有春天,我會如下注入它:

private IService is = new CachingService(new RoleService()); 

需要注意的是,與Decorator模式相一致,既CachingServiceRoleService實現IService接口。 CachingService,作爲IService的裝飾者有一個構造函數,它需要一個IService參數。

有沒有一種方法可以使用Spring註釋來自動裝配它?

在情況下,它會幫助,我想是這樣的:

@Autowire(with=CachingService, constructor-arg-ref=RoleService) 
private IService is; 

回答

1

你必須定義CacheService作爲單獨的衝刺豆:

<bean id="cacheService" class="CachingService"> 
    <constructor-arg type="innerService"> 
     <bean id="roleService" class="RoleService"> 
    </constructor-arg> 
</bean> 

這一點,你可以通過名字自動裝配的Spring bean後:

@Autowired 
@Qualifier("cacheService") 
private IService service;