Tôi đang sử dụng chú thích Spring và tôi muốn sử dụng khởi tạo lười biếng.Spring @Autowired @Lazy
Tôi đang gặp sự cố khi tôi muốn nhập một bean từ một lớp khác, tôi buộc phải sử dụng @Autowired
mà dường như không sử dụng lệnh init lười biếng. Có anyway để buộc hành vi init lười biếng này?
Trong ví dụ này tôi không muốn thấy "Đang tải bean mẹ" chưa từng được in vì tôi chỉ tải childBean
không phụ thuộc vào lazyParent
.
@Configuration
public class ConfigParent {
@Bean
@Lazy
public Long lazyParent(){
System.out.println("Loading parent bean");
return 123L;
}
}
@Configuration
@Import(ConfigParent.class)
public class ConfigChild {
private @Autowired Long lazyParent;
@Bean
public Double childBean() {
System.out.println("loading child bean");
return 1.0;
}
@Bean
@Lazy
public String lazyBean() {
return lazyParent+"!";
}
}
public class ConfigTester {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(ConfigChild.class);
Double childBean=ctx.getBean(Double.class);
System.out.println(childBean);
}
}
Tôi vừa có tầm nhìn khủng khiếp về một chiếc đậu 'Void'. Một cho TDWTF tôi nghĩ rằng ... –
Void Bean để cai trị tất cả. Void Bean để tìm chúng. Void Bean để mang lại tất cả, và trong Dependency Injection Bind chúng –
@skaffman Tôi có thể hỏi tại sao tôi không nên định nghĩa Strings là bean? – wings