ObjectProvider
support a method to get bean with specified args. (#18529)
But I have a collection beans to autowired, Use ObjectProvider<List<T>>
, but now it looks like the args
not effect, and throw
No qualifying bean
for constructor.
spring version: 4.3.25.RELEASE
Comment From: snicoll
@qrqhuang Unfortunately, Spring Boot 4.3.x is out of OSS support. If you manage to reproduce the problem with a supported version, please share a small sample we can run ourselves and we can have a look.
Comment From: qrqhuang
@snicoll Use spring 5.3.22, still the same error.
model
@Data
public class OrderContext {
private String orderNo;
}
component
@Component
@Scope(value = BeanDefinition.SCOPE_PROTOTYPE)
public class OrderTask {
private OrderContext orderContext;
public OrderTask(OrderContext orderContext) {
this.orderContext = orderContext;
}
}
test case. should not throw error
@Autowired
private ObjectProvider<List<OrderTask>> objectProviders;
@Test
void testProviders() {
OrderContext orderContext = new OrderContext();
orderContext.setOrderNo("222");
objectProviders.getObject(orderContext);
}
Comment From: snicoll
I don't understand what you're trying to achieve with a List
on ObjectProvider
. ObjectProvider
should be used against the target bean and handle the list use case using stream
. What do you expect to happen if this worked and there are multiple OrderTask
in the context?
Comment From: spring-projects-issues
If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.
Comment From: spring-projects-issues
Closing due to lack of requested feedback. If you would like us to look at this issue, please provide the requested information and we will re-open the issue.