tôi có thể tạo ra từ hai hạt cà phê từ lớp một java sử dụng cấu hình xml sử dụng đoạn mã sau:mùa xuân tạo ra hai hạt cà phê từ một lớp sử dụng chú thích
<context:component-scan base-package="some.package"/>
<bean id="dependentBean" class="some.package.DependentBean">
<property name="firstBean" ref="firstBean"/>
</bean>
<bean id="firstBean" class="some.package.Handler">
<constructor-arg index="0" ref="service"></constructor-arg>
<property name="defaultUrl" value="url/first"></property>
</bean>
<bean id="secondBean" class="some.package.Handler">
<constructor-arg index="0" ref="service"></constructor-arg>
<property name="defaultUrl" value="url/second"></property>
</bean>
Mục tiêu của tôi là di chuyển firstBean và secondBean để cấu hình java dựa như thế này :
package some.package;
@Configuration
public class Configuration {
@Bean(name="firstBean")
public Handler firstHandler(Service service){
Handler handler= new Handler(service);
handler.setDefaultTargetUrl("url/first");
return handler;
}
@Bean(name="secondBean")
public Handler secondHandler(Service service){
Handler handler = new Handler(service);
handler.setDefaultTargetUrl("url/second");
return handler;
}
}
Nhưng khi bối cảnh bắt đầu tải xuân ném ngoại lệ sau đây:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'firstBean' is defined
Tuy nhiên nó hoạt động trong trường hợp này:
package some.package;
@Component
public class Filter{
private Handler handler;
@Autowired
public Filter(@Qualifier("secondBean") Handler handler) {
this.handler = handler;
}
}
Handler thực hiện:
public class Handler {
private Service service;
@Autowired
public Handler(Service service) {
this.service = service;
}
}
Bạn có thể hiển thị nội dung đầy đủ của bạn? Với bất kỳ bean nào phụ thuộc vào 'firstBean'. –
Trường hợp ngoại lệ đó bị loại bỏ ở đâu? Đó có phải là do một số autowiring với tên đậu như vòng loại? Nếu có, bạn có thể cung cấp thêm một chút về cấu hình bối cảnh của mình và/hoặc chú thích chèn có liên quan không? –
"Dịch vụ" là gì? –