2 回答

TA貢獻1951條經(jīng)驗 獲得超3個贊
我相信你走錯了路。
彈簧依賴注入很棒,但這并不意味著你永遠不會在正確編寫的Spring Boot應用程序中找到調用。new
在這種情況下,呼叫是正確的做法。池中的每個實例都應在啟動時獲得自己的 / 實例。new
Executor
Runnable
Callable
這適用于任何方法作用域變量:最好在方法作用域中實例化它,并讓垃圾回收器在退出方法時清理它。在這種情況下,Spring沒有理由對豆類生命周期負責。
當您嘗試共享實例時,您會走得太遠,特別是如果它們具有狀態(tài)。Runnable

TA貢獻1804條經(jīng)驗 獲得超3個贊
即使問題已經(jīng)結束,也偶然發(fā)現(xiàn)了另一個解決方案,即 - @Lookup,它符合任務:實體:
@Component
@Scope("prototype")
public class Proto {
private static int counter;
public Proto() {
System.out.println("count: "+counter++);
}
}
服務:
@Service
public class ProtoService {
@Lookup
public Proto getProto() {
return null;
}
}
和測試:
@Service
public class LookupWorks {
@Autowired
private ProtoService serv;
@PostConstruct
private void test() {
System.out.println(">>>>>>>>>>>>>>");
serv.getProto();
serv.getProto();
serv.getProto();
serv.getProto();
serv.getProto();
System.out.println(">>>>>>>>>>>>>>");
}
}
輸出:
>>>>>>>>>>>>>>
count: 0
count: 1
count: 2
count: 3
count: 4
>>>>>>>>>>>>>>
添加回答
舉報