問題1)從我的理解春季創建單身的對象,所以,當我有一個控制器像一個自動裝配Autowired服務之下,會影響threadsafety。spring-mvc線程安全中的自動裝配對象?
問題2)如果我在類級別聲明一個int型變量並在控制器或服務中使用它,是否會影響線程安全的?
@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;
}
}
線程安全無關的事實,如果事情是單身或沒有(或管理由Spring與否)。什麼讓類不是線程安全的是共享可變狀態。在你的示例中沒有共享狀態,所以這是線程安全的。現在,如果您要在類級別變量中共享/保存findOne的結果,那麼它不會是線程安全的(因爲多個線程可以同時修改單個共享實例)。 –