2009-10-16 37 views
5

Tôi gặp sự cố khi cố tạo bean từ ngữ cảnh ứng dụng mùa xuân bên trong một bean được khởi tạo bởi lò xo bằng cách sử dụng đối số hàm tạo.Ngữ cảnh ứng dụng mùa xuân có sẵn bên trong hàm tạo

Tôi đã triển khai giao diện ApplicationContextAware nhưng nó điền vào ngữ cảnh sau khi cá thể được tạo (hiển nhiên).

Nhưng sau đó, nếu bạn cần lấy hạt từ hàm tạo và tôi đang nói về một số lượng đối tượng được xác định trong thời gian chạy, thì cách nào là đúng để tiếp tục?

Trả lời

5

Trong hạt được instanciated bởi Spring, thay vì khởi tạo nó trong Constructor, khởi tạo nó theo phương pháp chuyên dụng, được đánh dấu là "init-method" cho Spring.

Bạn có tác dụng tương tự như khởi tạo trong hàm tạo, nhưng bạn đang sử dụng đúng vòng đời của Spring.

+2

Ngoài ra, thực hiện 'InitializingBean' hoặc sử dụng '@ PostConstruct' chú thích. – skaffman

3

Bạn có thể làm cho ngữ cảnh có thể truy cập từ hàm tạo khai thác lập trình hướng-khía cạnh. Spring có hỗ trợ đặc biệt cho điều đó - @Configurable (preConstruction = true).

Hãy đọc thêm về điều này ở tài liệu tham khảo mùa xuân - 6.8.1. Using AspectJ to dependency inject domain objects with Spring

Các vấn đề liên quan