Tôi đang đọc sách Pro Spring 3. Nó có một đoạn nào đó thực sự làm tôi bối rối. Đoạn văn nói về việc tự động vào mùa xuân. Dưới đây là một đoạn trích:Khi nào sử dụng autowiring trong Spring
Trong hầu hết các trường hợp, câu trả lời cho câu hỏi liệu bạn nên sử dụng autowiring chắc chắn là “không!” Autowiring có thể giúp bạn tiết kiệm thời gian trong các ứng dụng nhỏ, nhưng trong nhiều trường hợp, nó dẫn thực hành không tốt và là không linh hoạt trong các ứng dụng lớn. Sử dụng byName có vẻ như một ý tưởng tốt là , nhưng nó có thể dẫn bạn cung cấp cho lớp học của bạn thuộc tính nhân tạo tên để bạn có thể tận dụng chức năng tự động. Toàn bộ ý tưởng đằng sau mùa xuân là bạn có thể tạo ra các lớp học của bạn như thế nào bạn thích và có mùa xuân làm việc cho bạn, không phải ... Điện thoại
... chi phí.
Tôi đã luôn sử dụng thẻ @Autowired trong các ứng dụng tôi đã tạo. Ai đó có thể giải thích những gì là sai với nó và những gì tôi nên sử dụng để thay thế?
Một ví dụ nhỏ về cách tôi xử lý hầu hết mọi thứ bây giờ là:
@Service("snippetService")
public class SnippetService {
@Autowired
private TestService testService;
public Snippet getSnippet() {
return testService.getSnippet();
}
}
Đang sử dụng autowiring như thế này "sai" hay tôi thiếu cái gì?
Tôi không phải là người dùng Spring, nhưng tôi quen thuộc với Guice và CDI. Những khung đó thực chất không có gì ngoài việc tự động; cho mỗi trang web được chèn chú thích, khuôn khổ sẽ đi và tìm một thứ gì đó có thể tiêm, dựa trên loại và trên bất kỳ trình độ nào hiện diện, sau đó tiêm nó. Mọi người đã xây dựng các ứng dụng thực sự khá lớn bằng cách sử dụng phương pháp này; tôi làm việc trên một. Tôi không tin rằng họ đã gặp phải những vấn đề được tiên đoán bởi những kẻ cuồng nhiệt mùa xuân. –
Tuy nhiên, hãy báo trước: các khung công tác này không thực hiện tự động theo nghĩa 'autowire =" byType "'. Nếu, như @mrembisz nói, bài báo đặc biệt cảnh báo chống lại điều đó, thì kinh nghiệm từ Guice và CDI không liên quan. –