如果制作单身是问题,为什么不使用 @Scope("prototype") 这样每个请求都会创建一个新的bean?对于有状态的bean,这应该是你应该做的。
@Scope("prototype")
https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s04.html#beans-factory-scopes-prototype
的 4.4.2原型范围 强> 非单例,bean部署的原型范围导致了 每次创建一个新的bean实例 对该特定bean的请求(即,它被注入 另一个bean或通过编程的getBean()方法请求它 打电话给容器)。根据经验,你应该使用 所有有状态bean的原型范围,而单身人士 范围应该用于无状态bean。
的 4.4.2原型范围 强>
非单例,bean部署的原型范围导致了 每次创建一个新的bean实例 对该特定bean的请求(即,它被注入 另一个bean或通过编程的getBean()方法请求它 打电话给容器)。根据经验,你应该使用 所有有状态bean的原型范围,而单身人士 范围应该用于无状态bean。
然后,您可以将实用程序类更新为:
@Component @Scope("prototype") public class DirectoryReader implements IReader { // Some other class variables, which values are different from other object of same class Ex. Delete the file after read. private boolean deleteFilesAfterRead; @Cacheable(cacheNames="directoryContent", unless="#result.length() > 0") public String getContent() { //Read a file and get data; return ""; } }