cuốn sách gpt4 ai đã làm

Có cách nào khiến Guice bị lỗi nhanh trong quá trình Guice.createInjector không

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 05:29:56 25 4
mua khóa gpt4 Nike

Dự án của tôi đang sử dụng GuiceLà một bộ chứa IOC chịu trách nhiệm cung cấp các phần phụ thuộc (các lớp dịch vụ) cho các biểu đồ đối tượng lớn (chủ yếu là các biểu đồ đơn). Đôi khi, nếu một phần phụ thuộc bị lỗi trong quá trình xây dựng và nhiều đối tượng yêu cầu phần phụ thuộc này thì lỗi sẽ xảy ra lặp đi lặp lại và một ngoại lệ sẽ được thêm vào Guice Cung cấp ngoại lệ 中。

Tôi có thể hiểu lý do căn bản của hành vi này vì nó liệt kê tất cả các lỗi đã xảy ra để tiết kiệm thời gian khắc phục sự cố. Tuy nhiên, tôi muốn tắt tính năng này và "thất bại nhanh chóng" vì các lỗi lặp lại trong trường hợp này tốn nhiều tài nguyên. Ngoài ra, "ProvisionException" chứa danh sách các ngoại lệ giống hệt nhau.

Tôi đánh giá cao rằng hành vi này là một triệu chứng (mùi) của các phương pháp thực hành không tốt trong quá trình triển khai (tức là tạo đối tượng sử dụng nhiều tài nguyên), nhưng vì các phần phụ thuộc là trừu tượng nên bất kỳ ai cũng có thể cung cấp các phần triển khai và plugin cho chúng bằng cách sử dụng tính năng tiêm phụ thuộc, do đó có rất ít biện pháp bảo vệ chống lại Nó.

Điều tôi muốn biết là: -

Có tham số nào cho phép Guice thoát khỏi quá trình tạo In phun trong ngoại lệ đầu tiên không?

Bất kỳ trợ giúp sẽ được đánh giá rất cao.

biên tập:

@Bài kiểm tra
public void guiceExample()
{
Bộ phun bộ phun = Guice.createInjector(new TestModule());
try{
Ví dụ IAmANeedyObject = Injector.getInstance(IAmAneedyObject.class);
}
bắt (ProvisionException e)
{
khẳng địnhThat(e.getErrorMessages().size(),Is.is(2));
}
}

Nội dung thử nghiệm này đã đưa ra hai trường hợp ngoại lệ

nhập com.google.inject.AbstractModule;
nhập com.google.inject.Inject;

lớp công khai TestModule mở rộng Tóm tắtModule {

@Ghi đè
được bảo vệ cấu hình void () {
bind(IWasDesignedWithHonestIntent.class).to(NastyThrowingExample.class);
bind(IMindMyOwnBusiness.class).to(SomeLucklessObject.class);
bind(IAAlsoMindMyOwnBusiness.class).to(SomeEquallyLucklessObject.class);
bind(IAmANeedyObject.class).to(LowSelfEsteem.class);
}
}

giao diện IWasDesignedWithHonestIntent {}

giao diện IMindMyOwnBusiness {}

giao diện IAlsoMindMyOwnBusiness {}

giao diện IAmANeedyObject {}

@Singleton
lớp NastyThrowingExample triển khai IWasDesignedWithHonestIntent {
@Tiêm
public NastyThrowingExample() ném LongSlowAgonisingDeathException {
ném LongSlowAgonisingDeathException mới ("Tôi sắp chết");
}
}

lớp LongSlowAgonisingDeathException mở rộng Ngoại lệ {
@Tiêm
public LongSlowAgonisingDeathException(String message) {
super(message);
}
}

lớp SomeLucklessObject triển khai IMindMyOwnBusiness {
@Tiêm
công khai SomeLucklessObject(IWasDesignedWithHonestIntent được thiết kếWithHonestIntent) {
}
}

lớp SomeEquallyLucklessObject triển khai IAlsoMindMyOwnBusiness {
@Tiêm
công khai SomeEquallyLucklessObject(IWasDesignedWithHonestIntent được thiết kếWithHonestIntent) {
}
}

lớp LowSelfEsteem triển khai IAmANeedyObject {
@Tiêm
public LowSelfEsteem(IMindMyOwnBusiness iMindMyOwnBusiness, IAlsoMindMyOwnBusiness wellMindMyOwnBusiness) {
}
}

câu trả lời hay nhất

Có tham số nào cho phép Guice thoát khỏi quá trình tạo In phun ở ngoại lệ đầu tiên không?

Tôi e là không, không.

Bạn sẽ phải tiếp tục sử dụng mã từ ví dụ của mình. Bạn luôn có thể đưa ra đề xuất cho nhóm Guice trên trang Google Code của họ.

Về java - có cách nào khiến Guice bị lỗi nhanh trong Guice.createInjector không, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/12315877/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress