1. Bean cùng ApplicationContext là gì?

1.1. Bean là gì?

Trong documentation của Spring framework, thì bean được định nghĩa như sau:

In Spring, the objects that size the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container.

Bạn đang xem: Bean là gì

Nói một cách dễ dàng và đơn giản, bean là phần lớn module thiết yếu của chương trình, được tạo ra và cai quản vị Spring IoC container.

Các bean hoàn toàn có thể nhờ vào cho nhau, nlỗi ví dụ về Car, Engine và ChinaEngine từ trên đầu series tới tiếng. Sự dựa vào này được diễn đạt mang lại IoC biết nhờ vào hiệ tượng Dependency injection.

Cách đánh dấu class là 1 trong những bean thì mình sẽ trình bày vào bài xích tiếp theo sau. Hiện giờ chúng ta chỉ nên biết dễ dàng nhất là dùng
Component lên class là class đó là 1 bean.

1.2. ApplicationContext là gì?

ApplicationContext là khái niệm Spring Boot dùng làm chỉ Spring IoC container, tương tự như như bean là thay mặt cho những dependency.

Dường như chúng ta cũng có thể đã nghe nói tới BeanFactory. Nó cũng đại loại nhỏng ApplicationContext, đại diện đến Spring IoC container nhưng mà ở tầm mức cơ bạn dạng. ApplicationContext thì ở tại mức cao hơn nữa, hỗ trợ những anh tài hơn BeanFactorgiống như i18n, resolving messages, publishing events,...

Xem thêm: Moboreader Coupons: Use Promo Code Or Coupon Code For Discounts On Moboreader


*

khi ứng dụng Spring chạy, Spring IoC container đã quét cục bộ packages, tìm ra các bean và gửi vào ApplicationContext. Cơ chế chính là Component scan, cũng trở thành được nói về vào bài bác tiếp theo sau.

1.3. Cách rước bean ra từ bỏ Context

Tất nhiên trước khi đem bean ra tự context thì phải có context rồi

*

cũng có thể phát âm vị Spring Boot đang kiếm tìm thấy nhị bean cân xứng để inject vào Car. Do cả nhì VNEngine và ChinaEngine đông đảo implements Engine, mà lại Car buộc phải Engine đề xuất chần chờ nên chọn cái làm sao.

3.2. Giải pháp

Có nhì giải pháp giải quyết sự việc này. Thứ đọng tốt nhất là sử dụng
Primary khắc ghi lên một bean. Lúc kia bean này sẽ tiến hành ưu tiên lựa chọn rộng, vào trường hòa hợp có khá nhiều bean phù hợp trong context.


Primarypublic class VNEngine implements Engine ...Cách 2 là chỉ định và hướng dẫn rõ thương hiệu bean (thương hiệu class) cụ thể được inject bởi
Qualifier.


Componentpublic class Car
Autowired
Qualifier("VNEngine") // Phải khớp hoa hay luôn nhe private final Engine engine;Đối với constructor tốt setter based cũng như, chỉ cần có
Qualifier trước tên field cần inject vào là được.

Okay nuốm là bài viết hôm nay sẽ dứt. Hai bài viết về bean với context của bản thân hi vọng vẫn đem đến cho các bạn đủ những kiến thức và kỹ năng cơ bản để đi tiếp đầy đủ phần sau của series. Cảm ơn cùng lưu giữ upvote hoặc clip nhằm ủng hộ mình nhé. Thân!