Ich habe einige Scheduler-Aufgaben, die UserInfoServiceExecutor, AdminInfoServiceExecutor-Dienste für jede Stunde auslösen (beide Dienste starten zur selben Zeit).Erzeugt der Frühling ein neues Objekt für autowired Felder?
Das Problem ist, diese Dienste mit LoggerService und LoggerService Suchmethode dauert fast 5 Minuten zu vervollständigen (ich meine while-Schleife). Da Sie UserInfo-Logs suchen müssen, müssen Sie sich mit einem Benutzeraccount anmelden und um Admin-Logs zu erhalten, müssen Sie sich mit einem Admin-Account einloggen (es bedeutet, dass verschiedene sessionTokens zurückkommen),
Überschreibt AdminInfoServiceExecutor UserInfoServiceExecutor sessionToken, wenn es danach startet?
@Service
public class UserInfoServiceExecutor {
@Autowired
private LoggerService loggerService;
public void saveUserInfos(){
loggerService.loginAndSearch("userInfo");
}
}
@Service
public class AdminInfoServiceExecutor {
@Autowired
private LoggerService loggerService;
public void saveAdminInfos(){
loggerService.loginAndSearch("adminInfo");
}
}
@Service
public class LoggerService{
private String sessionToken;
public String loginAndSearch(String key){
if(key.equals("userInfo"))
sessionToken = login(user);
if(key.equals("adminInfo"))
sessionToken = login(admin);
search(key);
}
public String search(String keyword){
while(hasMoreResults){
getResults(keyword, sessionToken);
}
}
}
EDIT:. I Standard-Frühling Rahmen verwende (Singleton)
Ja, ich verwende den Singleton-Bereich. Überschreibt AdminInfoServiceExecutor UserInfoServiceExecutor sessionToken, wenn es danach gestartet wird? – hellzone