【发布时间】:2025-12-04 05:40:02
【问题描述】:
我在一些关于 Spring MVC 和 Portlets 的帖子中读到,不推荐字段注入。据我了解,字段注入是当你像这样用@Autowired 注入一个 Bean 时:
@Component
public class MyComponent {
@Autowired
private Cart cart;
}
在我的研究过程中,我还阅读了有关构造函数注入:
@Component
public class MyComponent {
private final Cart cart;
@Autowired
public MyComponent(Cart cart){
this.cart = cart;
}
}
这两种注射方式的优缺点是什么?
编辑 1: 因为这个问题被标记为 this question 的重复,所以我检查了它。因为在问题和答案中都没有任何代码示例,我不清楚我的猜测是否正确,我正在使用哪种注入类型。
【问题讨论】:
-
如果字段注入如您描述的那么糟糕,为什么 Spring 允许它?字段注入有其自身的好处,使代码更具可读性和更少冗长。如果您在编码方面有足够的纪律,那么即使您使用字段注入,也可以确保事情不会中断。
-
@ashes 因为它在当时是一个简洁的功能,其含义并没有被完全考虑清楚。与
Date(int,int,int)存在的原因相同。
标签: java spring-mvc dependency-injection portlet autowired