Tôi có các sự cố tương tự nhưng là một người mới tham gia Spring. Tôi đã cố gắng để tải các thuộc tính thành một @Service, và cố gắng sử dụng @value để lấy giá trị tài sản với ...
@Autowired
public @Value("#{myProperties['myValue']}") String myValue;
Tôi dành cả ngày cố gắng kết hợp khác nhau của các chú thích, nhưng nó luôn được trả về rỗng . Cuối cùng câu trả lời là luôn luôn rõ ràng sau khi thực tế.
1) chắc chắn rằng mùa xuân đang quét lớp học của bạn cho các chú thích bằng cách bao gồm các gói hệ thống phân cấp Trong servlet.xml của bạn (nó sẽ quét tất cả mọi thứ ở dưới giá trị cơ sở bạn chèn.
2) Hãy chắc chắn rằng bạn KHÔNG 'mới' lớp mà bạn vừa nói với Spring để xem xét. Thay vào đó, bạn sử dụng @Autowire trong lớp @Controller.
Mọi thứ trong Spring là Singleton, và những gì đã xảy ra là Spring tải giá trị vào Singleton của nó, sau đó tôi đã 'new'ed một thể hiện khác của lớp không chứa các giá trị mới nạp nên nó luôn luôn rỗng.
Thay vì sử dụng @Controller ...
@Autowired
private MyService service;
Debugging ... Một điều tôi đã làm để tìm thấy điều này là để mở rộng dịch vụ của tôi như sau ...
@Service
public class MyService implements InitializingBean
Sau đó đưa vào báo cáo debug trong ...
@Override
public void afterPropertiesSet() throws Exception {
// TODO Auto-generated method stub
LOGGER.debug("property myValue:" + myValue);
}
Ở đây tôi có thể thấy giá trị được thiết lập khi khởi tạo, và sau đó khi tôi in nó theo một phương thức, nó là một đầu mối tốt cho tôi rằng nó không phải là cùng một ví dụ. Một đầu mối khác cho lỗi này là Tomcat đã phàn nàn về Timeout đang cố gắng đọc từ Socket với Không thể phân tích cú pháp HTTPheader ... Điều này là do Spring đã tạo ra một thể hiện của dịch vụ và vì vậy tôi đã có, do đó, một trong những của tôi đã làm công việc thực sự, và mùa xuân là thời gian ra trên ví dụ của nó.
Lớp Cấu hình có được định nghĩa là bean mùa xuân không? – Raghuram
không? Tôi sẽ làm như thế nào với chú thích? – Polaris878
Tôi đã thử sử dụng "@Component" và "@Controller" trên lớp và không hoạt động – Polaris878