是手动创建对象 ,即使用private final static DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
// ...
public static void main(String[] args) {
// do exception handling for `parse`
Reiziger r1 = new Reiziger("Joost", dateFormat.parse("01-01-1994"));
Reiziger r2 = new Reiziger("Hans", null);
// ...
}
运算符而不是注册new
bean并使用依赖注入被视为不良做法?我的意思是,Spring
容器必须知道应用程序中的所有对象吗?如果是这样,为什么?
答案 0 :(得分:3)
您希望Spring为以下类创建bean :
服务,控制器或拦截器就是它们的例子 例如,控制器可能需要注入服务或拦截器 同样,您不希望通过实现每个类的单例模式来处理这些类的实例化。这可能容易出错,需要锅炉板代码 所以你希望所有这些类都是由Spring管理的bean。
但您不希望Spring为以下类创建bean :
实体,DTO,价值对象就是它们的例子。
例如,实体永远不需要作为依赖项注入到另一个实体或服务中,因为实体不是在容器启动时创建的,而是通常在方法内部创建,并且范围仅限于方法生命周期。 />
除了你不需要Spring来创建寿命是一种方法的实例。 new
运算符可以很好地完成这项工作
因此将它们定义为bean实例是没有意义的,甚至反直觉。
答案 1 :(得分:0)
对象创建不应该依赖于类。当你使用new运算符时,它会创建一个依赖,这对你来说很痛苦,你必须担心这个对象的创建当你在构造函数中进行更改时。 对象全球化帮助的地方。自动装配对象可以完全减少依赖关系。如果你不使用这个功能,无论如何你都会了解自己。
答案 2 :(得分:0)
Spring实现依赖注入模式。你应该在spring的容器中注入将在其他类中使用的bean作为依赖以便能够工作。通常会注入实现接口的类,以便在更改实现时,使用该接口的类不知道更改。
我建议你阅读关于Martin Fowler依赖注入的post。