Tôi đã xem qua số link này giải thích cách có thể thừa kế một bean. Giả sử rằng lớp HelloWorld trong ví dụ này được hiển thị như là một bean sử dụng chú thích @Component, làm thế nào có thể tạo ra một bean khác thừa hưởng bean này? Tôi có thể sử dụng mở rộng để kế thừa bean HelloWorld và thêm @Component vào lớp mới để mở rộng bean hiện có để lộ ra nó như là một bean mới với các tính năng bổ sung?Thừa kế mùa xuân - Chú thích
Trả lời
Trước tiên, bạn hãy trừu tượng cấu hình của bạn, mà được thực hiện bằng không đánh dấu nó như @Configuration
, như thế này:
// notice there is no annotation here
public class ParentConfig {
@Bean
public ParentBean parentBean() {
return new ParentBean();
}
}
Một sau đó bạn mở rộng nó, như thế này:
@Configuration
public class ChildConfig extends ParentConfig {
@Bean
public ChildBean childBean() {
return new ChildBean();
}
}
Kết quả sẽ giống hệt như khi bạn thực hiện điều này:
@Configuration
public class FullConfig {
@Bean
public ParentBean parentBean() {
return new ParentBean();
}
@Bean
public ChildBean childBean() {
return new ChildBean();
}
}
Chỉnh sửa: trả lời câu hỏi tiếp theo trong nhận xét.
Nếu mùa xuân chọn cả hai lớp, cha mẹ và con, sẽ có vấn đề với hạt nhân bị trùng lặp, do đó, bạn không thể mở rộng nó trực tiếp. Ngay cả khi bạn ghi đè lên phương pháp, các hạt từ siêu lớp cũng sẽ được khởi tạo bởi ParentConfig
.
Kể từ lớp cha mẹ của bạn đã được biên soạn, bạn có 2 lựa chọn:
Nói chuyện với tác giả của tầng lớp phụ huynh và vui lòng yêu cầu ông phải thay đổi nó.
Thay đổi gói
@ComponentScan
.
Để rõ về giải pháp 2:
Nếu lớp cha mẹ là trong gói com.parent.ParentConfig
và các lớp con là gói com.child.ChildConfig
, quý vị có thể cấu hình các chức năng quét phần để chỉ lớp dướicom.child
get nhặt lên.
Bạn có thể chỉ định các gói quét thành phần bằng cách sử dụng chú thích @ComponentScan("com.child")
trên tệp cấu hình chính của bạn (nghĩ lớp ứng dụng).
- 1. Chú thích tùy chỉnh mùa xuân: cách kế thừa các thuộc tính?
- 2. Mùa xuân: điều khiển kế thừa bằng cách sử dụng chú thích @Controller
- 3. Chú thích @Transactional mùa xuân
- 4. Xác nhận MVC mùa xuân với chú thích
- 5. Chú thích giao dịch mùa xuân
- 6. Nhiều chú thích @RequestMapping Mùa xuân
- 7. mùa xuân lời khuyên chú thích để
- 8. Lô mùa xuân với chú thích
- 9. Thừa kế trong Chú thích Hibernate?
- 10. chú thích javax.persistence và thừa kế
- 11. Dữ liệu mùa xuân MongoDb cho kế thừa lớp
- 12. Mùa xuân: Trình quản lý giao dịch theo chú thích
- 13. mùa xuân, làm việc với @Configuration và chú thích @Bean
- 14. Sử dụng các biến tĩnh trong chú thích mùa xuân
- 15. Tạo hạt đậu mùa xuân nguyên mẫu với chú thích?
- 16. Chú thích mùa xuân @Autowired bên trong các phương thức
- 17. cầu cảng 9 + JDK 8 + mùa xuân 4 Chú thích
- 18. Mùa xuân - Biến đường cắt sau dấu chấm - chú thích
- 19. @PostConstruct chú thích và mùa xuân vòng đời
- 20. Cách tiêm Bản đồ bằng Chú thích Mùa xuân @Value?
- 21. Phụ thuộc vào chú thích của mùa xuân
- 22. Cách mở rộng chú thích mùa xuân @Transactional
- 23. Chú thích @Valid chỉ ra trong Mùa xuân là gì?
- 24. Số nguyên xác nhận chú thích mùa xuân mvc
- 25. Giá trị chú thích Phạm vi mùa xuân
- 26. Chú thích mùa xuân @Inject không hoạt động
- 27. Chú thích mùa xuân tương đương với jms: listener-container
- 28. mùa xuân, lớp trừu tượng và chú thích
- 29. Phụ thuộc mùa xuân Tiêm một chú thích Aspect
- 30. Mùa xuân 3.2 AOP - Phương pháp chặn bằng chú thích
Cảm ơn ESala. Trong trường hợp của tôi, lớp mà tôi đang cố gắng mở rộng là một phần của một cái bình và được định nghĩa với chú thích Thành phần. Tôi muốn tạo một bean mới mở rộng nó và ghi đè lên một phương thức. –
@PunterVicky Tôi đã thêm câu trả lời cho câu hỏi tiếp theo của bạn :) – ESala
Cảm ơn bạn lần nữa, ESala! –