Tôi có một ứng dụng Spring (Spring Batch không phải ứng dụng web). Trong một lớp thử nghiệm, tôi muốn lấy quyền truy cập vào tất cả các hạt đậu của tôi thuộc một loại nhất định.
Tôi hiểu rằng trong mùa xuân, bạn thường nên sử dụng IOC và để cho thùng chứa tiêm đậu của bạn. Tuy nhiên, trong trường hợp này, tôi muốn lặp qua một số lượng biến có thể mở rộng một lớp đã cho (org.springframework.batch.item.database.JdbcCursorItemReader), và làm một cái gì đó (muốn nó là một bài kiểm tra đơn vị/tích hợp mà chỉ cần kết nối nó vào cơ sở dữ liệu và đọc 1 hàng, vì vậy chúng tôi có thể xác nhận tại thời điểm thử nghiệm rằng tất cả JdbcCursorItemReader trong hệ thống có các trình ánh xạ SQL và hàng hợp lệ).Truy cập vào tất cả các hạt đậu mùa xuân thuộc một loại nhất định
Sự cố 1) Tôi chỉ có thể nhận đậu mỗi lần một. Tôi có thể có lớp học của tôi thực hiện BeanFactoryAware để có được một tham chiếu đến beanfactory của tôi. Sau đó, tôi có thể làm beanFactory.getBean ("name"); để có quyền truy cập vào một bean đơn. Làm thế nào để tôi có được TẤT CẢ đậu? Tôi có thể lặp lại và thả những cái mà không phải là lớp tôi muốn .. nhưng bằng cách nào đó tôi cần một danh sách tất cả các bean beanfactory biết về hoặc một cái gì đó.
Vấn đề 2) Đậu tôi nhận được từ beanfactory là proxy. Nếu tôi cố gắng đúc và sử dụng đậu của tôi, tôi có được một cái gì đó giống như java.lang.ClassCastException: $ Proxy0 không thể được đúc để org.springframework.batch.item.database.JdbcCursorItemReader
Tôi có thể truyền nó vào ItemReader và chỉ sử dụng nó? Và ma thuật proxy sẽ cho tôi người đọc thực sự? Hummmm mùa xuân là phức tạp đôi khi – bwawok
@ bwawok: Có, đúc để 'ItemReader' sẽ làm việc tốt. Chỉ cần không thử và truyền tới 'JdbcCursorItemReader'. – skaffman
@skaffman: nhưng nếu tôi phải làm điều gì đó như thế này ((JdbcCursorItemReader) itemReader) .open (executionContext); –