the modern spring framework has now been able to DI for abstract class properties.
For example:
public
abstract
class
AbstractCacheReader<T extends
AbstractMessage> implements
ModelCacheReader<T> {
T models;
@Value("${....cache.deployment.directory}")
protected
String CACHE_DEPLOYMENT_DIRECTORY;
....
}
with concrete class
@Component
@Slf4j
@Setter
public
class
ABCCacheReader extends
AbstractCacheReader<ABC.ABCModels> implements
ModelCacheReader<ABC.ABCModels> {
public
ABCCacheReader() {
..
models = ABC.ABCModels.newBuilder().build();
}
....
}
the CACHE_DEPLOYMENT_DIRECTORY would be properly wired
onto
ABCCacherReader
bean.