2014-09-16 12 views
13

Khi tôi đang làm việc với CDI, tôi có thể sử dụng chú thích @Produces để tạo phương thức nhà sản xuất được gọi để chọn hạt nào được triển khai giao diện sẽ được chèn vào chú thích @Inject.Tương đương với mùa xuân cho chú thích CDI @Produces là gì?

Bây giờ tôi đang làm việc với Spring, nhưng tôi không tìm thấy bất cứ điều gì tương tự. Những gì tôi cần phải sử dụng để đạt được kết quả tương tự như tôi đã có với chú thích @Produces trong CDI khi tôi sử dụng chú thích @Autowired?

Trả lời

13

Bạn đang tìm kiếm @Bean:

@Bean là một chú thích phương pháp cấp và analog trực tiếp của các phần tử XML. Chú thích hỗ trợ hầu hết các thuộc tính được cung cấp bởi, chẳng hạn như: phương thức init, phương thức hủy diệt, autowiring, lazy-init, dependency-check, depend-on và scope.

Ví dụ (lấy từ liên kết ở trên):

@Configuration 
public class AppConfig { 
    //similar to @Produces CDI annotation 
    @Bean 
    public TransferService transferService() { 
     return new TransferServiceImpl(); 
    } 
} 

tôi đề nghị bạn phải trả một đọc như sau: Spring DI and CDI comparative study

+1

Cẩn thận với một sự khác biệt lớn - một nhà sản xuất CDI có quyền truy cập vào InjectionPoint, mà cho phép nó thực hiện một số thủ thuật bổ sung. –

+0

Bạn cũng có thể sử dụng @Autowired để truyền các phần tử cần được tiêm vào đậu và đặt chúng. –

+0

Với CDI, bạn có thể tiêm các loại nguyên thủy hoặc các đối tượng không phải là hạt đậu. Điều đó cũng hợp lệ với Spring? Ngoài ra khi tôi nhận được quyền này, các khái niệm khác nhau: trong khi CDI cho phép mọi bean tạo ra một đối tượng được tiêm, trong các lớp Spring chỉ chú thích với @Configuration có thể tạo ra Beans (nếu không ở chế độ Lite). Các ý định khác nhau ... – Wecherowski

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