Giả sử tôi có hai mô-đun. Một là cốt lõi và một là mô-đun thực hiện phụ thuộc cốt lõi. Core là tệp jar cho chiến dịch mô-đun phụ thuộc triển khai đó.ghi đè cấu hình bean vào mùa xuân
Trong lõi Tôi có một bean định nghĩa như thế
<bean id="x" class="com.pokuri.X">
<property name="y" ref="y"/>
<property name="z" ref="z"/>
</bean>
Và lớp mà có một phương pháp như sau
public class X{
public void doSomeJob(){
.......
}
}
phương pháp này đã được gọi từ một số lớp lõi. Bây giờ tôi cần phải thay đổi logic trong phương thức doSomeJob() của X đó theo cách thực hiện phụ thuộc cốt lõi của tôi. Vì vậy, tôi tạo một lớp học như thế này
public class ExtX extends X{
@override
public void doSomeJob(){
// changed logic
}
}
và xác định bean có cùng id trong một tệp xml ngữ cảnh ứng dụng khác như thế này.
<bean id="x" class="com.pokuri.ExtX">
<property name="y" ref="y"/>
<property name="z" ref="z"/>
</bean>
và chúng tôi đang xây dựng bối cảnh ứng dụng sử dụng tham số contextConfigLocation
bối cảnh trong web.xml
xác định giá trị như classpath:springfolder
.
Nhưng trong logic lõi, tôi chỉ nhận được cá thể bean lõi (ví dụ: X
thể hiện) không ExtX
. Làm thế nào chúng ta có thể ghi đè lên định nghĩa bean đó và để cho hệ thống bắt đầu sử dụng định nghĩa bean mở rộng mới?
Và tôi nghe nói rằng với cùng một ID trong các tệp ngữ cảnh ứng dụng khác nhau sẽ ghi đè định nghĩa bean được tải đầu tiên với định nghĩa bean được tải sau này. Có bất kỳ loại thuộc tính priority
nào trên định nghĩa bean để cho phép ApplicationContext sử dụng ưu tiên cao nhất để xem xét ưu tiên thấp hơn khi các bean có cùng ID được tìm thấy.
Sẽ cố gắng tiếp cận của bạn – Pokuri
Tất nhiên nó hoạt động. Nhưng thực hành tốt có bao gồm một định nghĩa của một định nghĩa khác không? Tôi nghĩ đó là loại hack: / –