Tôi đang học để lấy chứng chỉ Spring Core và tôi có một số nghi ngờ về cách Spring xử lý vòng đời của bean và đặc biệt là về bộ xử lý bean post .
Vì vậy, tôi có giản đồ này:
Điều đó khá rõ ràng đối với tôi:
Các bước sau đây diễn ra trong giai đoạn Định nghĩa Load Bean :
Các lớp @Configuration được xử lý và / hoặc @Components được quét và / hoặc các tệp XML được phân tích cú pháp.
Các định nghĩa về Bean được thêm vào BeanFactory (mỗi định nghĩa được lập chỉ mục dưới id của nó)
Đậu BeanFactoryPostProcessor đặc biệt được gọi ra, nó có thể sửa đổi định nghĩa của bất kỳ bean nào (ví dụ đối với các giá trị thay thế thuộc tính-placeholder).
Sau đó, các bước sau sẽ diễn ra trong giai đoạn tạo hạt đậu :
Mỗi bean được khởi tạo theo mặc định (được tạo theo đúng thứ tự với các phụ thuộc của nó được chèn vào).
Sau khi tiêm phụ thuộc, mỗi bean sẽ trải qua một giai đoạn xử lý sau, trong đó có thể xảy ra thêm cấu hình và khởi tạo.
Sau khi xử lý bài đăng, bean được khởi tạo hoàn toàn và sẵn sàng để sử dụng (được theo dõi bởi id của nó cho đến khi ngữ cảnh bị phá hủy)
Ok, điều này khá rõ ràng đối với tôi và tôi cũng biết rằng có hai loại bộ xử lý bean post là:
Khởi tạo: Khởi tạo bean nếu được hướng dẫn (tức là @PostConstruct).
và Tất cả phần còn lại: cho phép cấu hình bổ sung và có thể chạy trước hoặc sau bước khởi tạo
Và tôi đăng slide này:
Vì vậy, nó rất rõ ràng đối với tôi những gì khởi tạo bộ xử lý bean post (chúng là các phương thức được chú thích với chú thích @PostContruct và được tự động gọi ngay sau các phương thức setter (vì vậy sau khi tiêm phụ thuộc) và tôi biết rằng tôi có thể sử dụng thực hiện một số lô khởi tạo (như điền vào bộ nhớ cache như trong ví dụ trước).
Nhưng chính xác thì điều gì đại diện cho bộ xử lý bài đậu khác? Ý của chúng tôi là gì khi nói rằng các bước này được thực hiện trước hoặc sau giai đoạn khởi tạo ?
Vì vậy, các bean của tôi được khởi tạo và các phụ thuộc của nó được đưa vào, do đó, giai đoạn khởi tạo sẽ hoàn thành (bằng cách thực thi phương thức chú thích @PostContruct ). Ý chúng tôi là gì khi nói rằng Bộ xử lý bài viết Bean được sử dụng trước giai đoạn khởi tạo? Có nghĩa là nó xảy ra trước khi thực thi phương thức chú thích @PostContruct ? Nó có nghĩa là nó có thể xảy ra trước khi tiêm phụ thuộc (trước đó các phương thức setter được gọi) không?
Và chính xác thì ý của chúng tôi là gì khi nói rằng nó được thực hiện sau bước khởi tạo . Nó có nghĩa là nó xảy ra sau đó việc thực thi một phương thức chú thích @PostContruct , hoặc điều gì?
Tôi có thể dễ dàng tìm ra lý do tại sao tôi cần một phương thức chú thích @PostContruct nhưng tôi không thể tìm ra một số ví dụ điển hình về loại trình xử lý bài đậu khác, bạn có thể chỉ cho tôi một số ví dụ điển hình về thời điểm được sử dụng không?