2010-01-04 7 views
6

Chúng tôi biết vào mùa xuân, <bean> có thuộc tính "chính" để biểu thị bean là ứng cử viên đầu tiên nếu có nhiều bean sẵn có để tự động một tài sản.Tôi không thể sử dụng chú thích để cho biết đậu là đậu chính

Nhưng bây giờ tất cả các định nghĩa bean của tôi được khai báo bằng cách sử dụng @ Thành phần/@ Dịch vụ, vv, tôi không thể tìm thấy thuộc tính "chính" tương ứng mà tôi có thể sử dụng để khai báo một bean.

Vui lòng cho biết cách tôi có thể đạt được điều này, cảm ơn.

Trả lời

22

Vào mùa xuân 3.0, bạn sử dụng @Primary.

Chỉ ra rằng một bean nên được trao sở thích khi có nhiều ứng cử viên có đủ điều kiện để autowire một đơn có giá trị phụ thuộc . Nếu chính xác một hạt 'chính' tồn tại trong số các ứng cử viên , nó sẽ là giá trị tự động .

Có thể được sử dụng trực tiếp trên mọi lớp học hoặc được chú thích gián tiếp với Component hoặc trên các phương thức được chú thích bằng Bean.

Sử dụng Chính ở cấp lớp có không có hiệu lực trừ khi quét thành phần đang được sử dụng. Nếu lớp được chú thích chính được khai báo qua XML, thì siêu dữ liệu chú thích chính bị bỏ qua và thay vào đó, <bean primary="true|false"/> là .

Xem ref docs.

+0

Cảm ơn tôi đã nâng cấp lên Spring 3.0, nó hoạt động tốt ngay bây giờ. – Matt

+0

có vẻ như tài liệu ref của bạn đã qua đời. điều này có thể tốt hơn: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Primary.html –

+0

@jb. cảm ơn, cố định – skaffman

4

Chú thích @Primary sẽ chỉ hoạt động nếu bạn đang sử dụng Spring 3.0.

Vào mùa xuân 2.5, không có chú thích tương đương cho thuộc tính chính. Bạn phải sử dụng chú thích @Qualifier để chỉ định bean nào bạn muốn tiêm. Một tùy chọn khác là xác định chú thích định danh của riêng bạn cho cùng một mục đích.

Xem docs để biết thêm thông tin.