我正在使用装饰器模式来使用缓存服务类来装饰服务类。
如果没有Spring,我会按如下方式注入:
private IService is = new CachingService( new RoleService());
请注意,与Decorator模式一致,CachingService
和RoleService
都实现了IService
接口。 CachingService
,作为IService
的装饰器有一个带IService
参数的构造函数。
有没有办法使用Spring注释自动装配?
如果它会有所帮助,我想象一下这样的事情:
@Autowire(with=CachingService, constructor-arg-ref=RoleService)
private IService is;
答案 0 :(得分:1)
您必须将CacheService定义为单独的sprint bean:
abc 03-03-2016
在此之后,您可以按名称自动装配spring bean:
<bean id="cacheService" class="CachingService">
<constructor-arg type="innerService">
<bean id="roleService" class="RoleService">
</constructor-arg>
</bean>