Tôi đang sử dụng chú thích @Autowired
dưới một hàm tạo lớp @Configuration
.Cách đặt tham số hàm tạo @Autowired là "required = false" riêng lẻ
@Configuration
public class MyConfiguration {
private MyServiceA myServiceA;
private MyServiceB myServiceB
@Autowired
public MyConfiguration(MyServiceA myServiceA, MyServiceB myServiceB){
this.myServiceA = myServiceA;
this.myServiceB = myServiceB;
}
}
Là Spring documentation sais, tôi có thể tuyên bố xem phụ thuộc có chú thích là bắt buộc hay không.
Nếu tôi đánh dấu @Autowired
chú thích dưới các nhà xây dựng như required=false
, tôi nói rằng hai dịch vụ được autowired không phải (tùy theo từng sais tài liệu Spring):
@Autowired(required = false)
public MyConfiguration(MyServiceA myServiceA, MyServiceB myServiceB){
this.myServiceA = myServiceA;
this.myServiceB = myServiceB;
}
Từ tài liệu xuân :
Trong trường hợp của nhiều phương pháp đối số, thông số 'bắt buộc' là áp dụng cho tất cả các đối số.
Làm cách nào để đặt thuộc tính required
cho từng thông số hàm tạo riêng lẻ? Bạn có cần sử dụng chú thích @Autowired
trong mọi trường không?
Kính trọng,
nó sẽ gây ra lỗi NPE sau – Andrew
@AndrewTobilko chắc chắn OP sẽ kiểm tra giá trị rỗng nếu anh ta đang xem xét sự phụ thuộc "tùy chọn". Bạn cũng có thể có các trường tùy chọn. Nhiều cách để đảm bảo bạn sẽ không nhận được NPE. – Strelok
Tôi không muốn sử dụng 'Tùy chọn', nhưng cảm ơn câu trả lời của bạn;) – jcgarcia