假设您有以下设置:
public class Producer {
public Product produce() { /* Creates some product */ }
}
@Service
public class ProductService {
@Autowired
private Producer producer;
public Product produce() { producer.produce(); }
}
public class Factory {
private static ProductService productService = new ProductService();
public static Product produce() { productService.produce(); }
}
当我调用
Factory.produce()
时,我得到一个 NullPointerException
,因为 producer
为空。由于 producer
本身不是静态字段,我希望通过这种方式设置它,我可以在静态上下文中使用 Springs 依赖注入。我是否犯了一个错误,或者这根本不可能?
对于上下文:在我的实际应用程序中,
Factory
拥有多个服务,而每个服务又拥有多个生产者。我选择了这种结构,所以我的应用程序的其余部分只需要访问 Factory
,其背后的所有复杂性都被它抽象了。
只需用
Factory
注释
@Autowired
的构造函数即可
@Component
public class Factory {
private static ProductService productService;
@Autowired
public Factory(ProductService productService) {
Factory.productService = productService;
}
public static Product produce() { productService.produce(); }
}