我是春天新手。我的班级图就像这样
public abstract class Cache{
refreshCache() {
clearCache();
createCache();
}
clearCache();
createCache();
getName();
}
@Component
@Scope("singleton")
@Qualifier("category")
class Category extends Cache implements ICategory{}
@Component
@Scope("singleton")
@Qualifier("attr")
class Attr extends Cache implements IAttr{}
@Component
@Scope("singleton")
@Qualifier("country")
class Country extends Cache implements ICountry{}
默认情况下,spring bean的范围是singleton。所以我想创建缓存管理服务。通过反射,我将获得扩展Cache类的所有类,但是如果我将使用" new
"来实例化它们,则所有缓存都具有单例范围。我正在获得新的对象,但是其他的将获得不同的对象,而其他类就像下面这样注入它。
Class A {
@inject
Country c
}
Class B {
@inject
Attr attr
}
每次注射都使用相同的缓存,所以如果我使用" new
"刷新不会反映给他们。
P.S。 - 主要目标是创建一个类,它将知道扩展Cache类的所有类,并给出一个名称(来自Cache类的getName()
函数),它将刷新相应的缓存。如果spring具有足够好的功能。
答案 0 :(得分:0)
“主要目标是创建一个类,它将知道扩展Cache类的所有类并给出一个名称(来自Cache类的getName()函数)”
只需使用@Autowired或@Inject
创建一个集合@Autowired
List<Cache>