2010-05-27 31 views
16

Tôi đã có một lớp trừu tượng khá đơn giảnmùa xuân, lớp trừu tượng và chú thích

public abstract class AbstractServiceActions { 

    @Autowired 
    protected DatabaseModel dbModel; 

    protected User user; 
    protected boolean complete; 
    protected String serviceResult; 

    public AbstractServiceActions(User user) { 
     this.user = user; 
     this.serviceResult = ""; 
    } 

    public abstract String doAction(); 
    } 

Bây giờ bạn có thể thấy, tôi đang cố gắng để autowire các DatabaseModel. Nhưng trong lớp mở rộng của tôi, tôi chỉ nhận được null cho dbModel.

@Component 
public class CreateDatabaseAction extends AbstractServiceActions { 
.... 
} 

Câu hỏi: Tôi đang thử điều gì đó không thể ở đây?

+0

Bạn có đang chạy mùa xuân quét thành phần gói trừu tượng của bạn không? –

Trả lời

22

Thiết lập của bạn có vẻ ổn. Lý do có lẽ nằm ở nơi khác. Có lẽ bạn đang instantiating lớp với new CreateDatabaseAction(), thay vì để cho mùa xuân làm điều này.

+0

điểm tốt. Tôi sẽ kiểm tra điều này ra – onigunn

+1

+1: Spring cho phép autowiring trong các lớp trừu tượng, vì vậy đề xuất của bạn có ý nghĩa tốt! – Espen

+0

yup, đây là nó .. – hakish

1

Sử dụng @Autowired và không @Inject từ javax.inject.

Tiêm phụ thuộc trong lớp trừu tượng chỉ hoạt động cho mùa xuân @Autowired.

FYI, tôi đang sử dụng Spring 4.0; Java 6

+0

Chú thích '@ Resource' cũng hoạt động. – Jason

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