Java 使用类名将值注入singleton作用域
我是春天的新手。我的类图是这样的Java 使用类名将值注入singleton作用域,java,spring,caching,dependency-injection,Java,Spring,Caching,Dependency Injection,我是春天的新手。我的类图是这样的 public abstract class Cache{ refreshCache() { clearCache(); createCache(); } clearCache(); createCache(); getName(); } @Component @Scope("singleton") @Qualifier("category") class Category extends Cach
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{}
默认情况下,Springbean的作用域是单例的。所以我想创建缓存管理服务。通过反射,我将得到所有扩展缓存类的类,但是如果我用“new
”实例化它们,那么所有缓存都是单例作用域的。我得到了新的对象,但是其他的将得到不同的对象,其他的类将像下面一样注入它
Class A {
@inject
Country c
}
Class B {
@inject
Attr attr
}
每次注入都使用相同的缓存,因此如果我使用“new
”刷新创建它,则刷新不会反映到它们
注意:主要目标是创建一个类,该类将知道扩展缓存类的所有类,并给出一个名称(getName()
Function from Cache class)),它将刷新相应的缓存。如果spring有这样的功能就足够了。“主要目标是创建一个类,该类将知道扩展缓存类的所有类,并给出一个名称(缓存类中的getName()函数)”
只需使用@Autowired或@Inject创建一个集合
@Autowired
List<Cache>
@Autowired
列表
只需添加一个集合列表
将@Autowired
放在上面,您将获得该类型的所有bean实例。你不必到处乱闯。