property 和constructor-arg 区别是什么呢?为啥用constructor-arg 呢?
时间: 2024-04-16 16:26:01 浏览: 115
node-task-for-ordering-constructor-params
`property` 和 `constructor-arg` 是在 Spring 框架中用于依赖注入的两种方式。
`property` 是一种属性注入的方式,通过在 Bean 的定义中使用 `<property>` 标签来设置属性的值。这种方式是通过调用 Bean 的 setter 方法来设置属性的值。
`constructor-arg` 是一种构造函数注入的方式,通过在 Bean 的定义中使用 `<constructor-arg>` 标签来设置构造函数的参数值。这种方式是通过调用 Bean 的构造函数来创建对象,并传入参数值。
它们的区别主要体现在以下几个方面:
1. 使用方式:`property` 是通过调用 Bean 的 setter 方法来设置属性值,而 `constructor-arg` 是通过调用 Bean 的构造函数来创建对象并传入参数值。
2. 依赖关系:`property` 方式可以在任何时候设置属性值,而 `constructor-arg` 方式必须在创建对象时传入参数值,所以 `constructor-arg` 方式更适合有必需参数的依赖关系。
3. 灵活性:`property` 方式可以在任何时候修改属性值,而 `constructor-arg` 方式只能在对象创建时设置参数值,之后无法修改。
选择使用哪种方式取决于具体的场景和需求。一般来说,如果一个类的属性是可选的,并且可能会在运行时变化,那么可以使用 `property` 方式;如果一个类的属性是必需的,并且在创建对象时就应该设置,那么可以使用 `constructor-arg` 方式。
阅读全文