Mùa xuân - Đậu tự động đấu dây

Bạn đã học cách khai báo bean bằng cách sử dụng phần tử <bean> và chèn <bean> bằng cách sử dụng các phần tử <constructor-arg> và <property> trong tệp cấu hình XML.

Hộp đựng mùa xuân có thể autowire mối quan hệ giữa các bean cộng tác mà không sử dụng các phần tử <constructor-arg> và <property>, giúp cắt giảm số lượng cấu hình XML bạn viết cho một ứng dụng lớn dựa trên Spring.

Chế độ tự động

Sau đây là các chế độ tự động phân bổ, có thể được sử dụng để hướng dẫn vùng chứa Spring sử dụng tính năng tự động phân bổ để chèn phụ thuộc. Bạn sử dụng thuộc tính autowire của phần tử <bean /> để chỉ địnhautowire chế độ cho một định nghĩa bean.

Sr.No Chế độ & Mô tả
1 no

Đây là cài đặt mặc định có nghĩa là không có tự động kết nối và bạn nên sử dụng tham chiếu bean rõ ràng để nối dây. Bạn không có gì để làm đặc biệt cho hệ thống dây điện này. Đây là những gì bạn đã thấy trong chương Dependency Injection.

2 bằng tên

Autowiring theo tên thuộc tính. Spring container xem xét các thuộc tính của bean mà thuộc tính autowire được đặt thành byName trong tệp cấu hình XML. Sau đó, nó cố gắng khớp và nối các thuộc tính của nó với các bean được xác định bởi cùng tên trong tệp cấu hình.

3 theo loại

Tự động tạo theo kiểu dữ liệu thuộc tính. Spring container xem xét các thuộc tính của bean mà thuộc tính autowire được đặt thành byType trong tệp cấu hình XML. Sau đó, nó cố gắng khớp và nối một thuộc tính nếutypekhớp với chính xác một trong các tên bean trong tệp cấu hình. Nếu tồn tại nhiều hơn một hạt đậu như vậy, một ngoại lệ chết người sẽ bị loại bỏ.

4 constructor

Similar to byType, but type applies to constructor arguments. If there is not exactly one bean of the constructor argument type in the container, a fatal error is raised.

5 autodetect

Spring first tries to wire using autowire by constructor, if it does not work, Spring tries to autowire by byType.

You can use byType or constructor autowiring mode to wire arrays and other typed-collections.

Limitations with autowiring

Autowiring works best when it is used consistently across a project. If autowiring is not used in general, it might be confusing for developers to use it to wire only one or two bean definitions. Though, autowiring can significantly reduce the need to specify properties or constructor arguments but you should consider the limitations and disadvantages of autowiring before using them.

Sr.No. Limitations & Description
1

Overriding possibility

You can still specify dependencies using <constructor-arg> and <property> settings which will always override autowiring.

2

Primitive data types

You cannot autowire so-called simple properties such as primitives, Strings, and Classes.

3

Confusing nature

Autowiring is less exact than explicit wiring, so if possible prefer using explict wiring.