Đăng ký bean trong Spring container với BeanRegistrar

Từ version 7, Spring introduce thêm cho chúng ta một cách nữa để các bạn có thể đăng ký một hoặc nhiều bean cùng một lúc trong Spring container sử dụng implementation của interface BeanRegistrar. Cụ thể như thế nào? Hãy cùng mình tìm hiểu trong bài viết này các bạn nhé!

Mình sẽ tạo một Maven project:

với Spring Framework dependency:

để làm ví dụ.

Giả sử mình có class Hello như sau:

Để đăng ký bean cho class Hello này sử dụng implementation của interface BeanRegistrar, các bạn có thể override lại phương thức register() của interface BeanRegistrar và sử dụng các phương thức registerBean() của class BeanRegistry như sau:

Với tham số là class Hello.class như trên, Spring sẽ tự động generate một unique bean name dựa vào class name và khởi tạo bean cho class Hello trong Spring container.

Các bạn có thể gán bean name mà các bạn muốn, hoặc cũng có thể thêm điều kiện để khởi tạo bean cho class Hello, ví dụ như sau:

Sau khi đã implement interface BeanRegistrar xong, các bạn có thể sử dụng annotation @Import để khai báo định nghĩa bean này với Spring container, như sau:

Bây giờ thì các bạn có thể lấy bean của class Hello ra và sử dụng:

Kết quả của mình như sau:

Add Comment