Footnote [2] liên kết của bạn:
[2]: Bởi vì chế biến <import/>
yếu tố nhất thiết phải xảy ra trước khi BeanFactoryPostProcessors được gọi, có nghĩa là thậm chí PropertyPlaceholderConfigurer không thể giúp đây. Vì môi trường và tập hợp các thuộc tính của tài sản được cấu hình trước khi làm mới vùng chứa, các phần giữ chỗ trong các phần tử có thể được giải quyết chống lại môi trường mà không có bất kỳ vấn đề vòng đời nào.
CẬP NHẬT:
Theo javadoc for PropertySourcesPlaceholderConfigurer, PropertySourcesPlaceholderConfigurer
là một BeanFactoryPostProcessor
, vì vậy những gì chú thích thực sự muốn nói rằng việc nhập khẩu được giải quyết trước các PropertySourcesPlaceholderConfigurer được cài đặt, vì vậy nó sẽ không làm việc hoặc (trên thực tế, tại thời điểm <import/>
được giải quyết, trình cấu hình có thể chưa tồn tại!) Có, khi nó được cài đặt, nó sẽ nhìn vào Environment
, nhưng bạn không thể sử dụng nó để giải quyết bên trong một <import/>
, bởi vì tại thời điểm đó không người hậu xử lý là tác nhân. Và bao gồm PropertySourcesPlaceholderConfigurer
.
Về cơ bản mùa xuân XML thiết lập bối cảnh đi nhiều hay ít như thế này:
- Bối cảnh được tạo ra.
Environment
được đặt.
- XML được đọc (tất cả XML, giải quyết nhập nếu cần). Bean định nghĩa được tạo ra.
BeanFactoryPostProcessor
s được cài đặt và gọi, xử lý định nghĩa bean.
BeanPostProcessor
s được cài đặt.
- Đậu được khởi tạo theo định nghĩa của hạt. BeanPostProcessors được áp dụng.
Đây là một vấn đề tương tự như gây ra mà bạn không thể sử dụng order
tài sản của nhiều postprocessors để áp dụng một BeanPostProccesor
trước một BeanFactoryPostProcessor
(để làm một cái gì đó giống như làm một PropertyPlaceholderConfigurer
placeholders quyết tâm từ một @PersistenceContext
): Hành vi này là hardcoded trong bối cảnh ứng dụng Spring, vì vậy bạn phải làm việc xung quanh nó bằng cách chuyên một số lớp Spring.
Điều gì xảy ra khi bạn dùng thử? Lỗi, không có gì, v.v. –
Chỉ là lỗi nói "Không thể giải quyết thông tin đăng nhập của người giữ chỗ". –