2009-11-02 32 views

Trả lời

14

Sự khác biệt là các setter sẽ được gọi nếu đó là nơi bạn đặt nó, đó là hữu ích nếu nó hiện công cụ khác hữu ích, xác nhận, vv Thông thường bạn đang so sánh:

public class A { 
    private B instanceB; 

    @Autowired 
    public setInstanceB(B instanceB) { 
    this.instanceB = instanceB; 
    } 
} 

vs

public class A { 
    @Autowired 
    private B instanceB; 
} 

(nghĩa là không có setter).

Việc đầu tiên là thích hợp hơn trong trường hợp này vì thiếu người đặt cược làm cho việc kiểm tra đơn vị/chế nhạo trở nên khó khăn hơn. Ngay cả khi bạn có một setter nhưng autowire các thành viên dữ liệu bạn có thể tạo ra một vấn đề nếu setter làm một cái gì đó khác nhau. Điều này sẽ làm mất hiệu lực kiểm tra đơn vị của bạn.

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