Question 1) D'après ma compréhension, le ressort crée des objets singletons, donc quand j'ai un contrôleur comme ci-dessous avec un service automatique, cela affectera la sécurité des threads.Les objets autowired dans springs mvc threadsafe?
Question 2) Si je déclare une variable de type int au niveau de la classe et l'utilise dans le contrôleur ou le service, cela affectera-t-il la sécurité des threads?
@Controller
public class LoginController {
@Autowired
public DaoService daoservice;
@RequestMapping("/")
public String getBookInfo() {
Book book = daoservice.getBookbyId(1L);
System.out.println(book.getTitle());
return "welcome";
}
}
@Service
public class DaoService {
@Autowired
public BookRepository BookRepo;
public Book getBookbyId(Long Id) {
Book book = BookRepo.findOne(Id);
return book;
}
}
La sécurité du fil n'a rien à voir avec le fait que quelque chose soit un singleton ou non (ou géré par Spring ou non). Ce qui rend les classes non sécurisées par les threads est l'état mutable partagé. Dans votre exemple, il n'y a pas d'état partagé. Maintenant, si vous partagez/maintenez le résultat de 'findOne' dans une variable de niveau classe, il ne sera pas thread-safe (car plusieurs threads pourraient modifier simultanément l'instance partagée unique). –