em có 1 số câu hỏi về spring mvc trong java
- khi em tạo spring repository , em làm theo hướng dẫn trên mạng thì sẽ viết thế này
@Repository
public interface BookRepository extends CrudRepository<Bookmaster, Integer> {
// code crud
}
use :
@autowired
BookRepository bookRepository ;
vậy cho em hỏi cái đối tượng bookRepository nó sẽ được khởi tạo từ lớp nào , vì em thấy bản thân nó là interface thì chắc chắn sẽ phải có 1 class implement nó thì mới tạo đối tượng được nhưng trong spring chỉ cần dùng autowired là nó tự động tạo đối tượng cho mình?
- theo em được biết các bean mà ta khai báo để container thực hiện việc inject vào các class sẽ được xậy dựng theo singleton >>> tức là mỗi bean sẽ là duy nhất trong toàn bộ ứng dụng
nhưng đối với 1 webapp bằng java thì sẽ có nhiều request gởi đến cùng lúc và muốn sử dụng các bean này >>> vậy ở đây xảy ra điều gì ? 1. cùng 1 bean phục vụ cho nhiều thread và container sẽ đồng bộ hóa dữ liệu giữ các thread >>> nhưng thế này em thấy không hợp lý vì lỡ như có cả triệu request mà dùng chung 1 bean thì sẽ dễ bị nút cổ chai , 2. nó tạo ra nhiều bean mỗi lần có request gửi tới nó sẽ inject bean đó vào thread