Spring - IoC(2): 属性注入 & 构造注入
依赖注入是指程序运行过程中,如果需要另外的对象协作(访问它的属性或调用它的方法)时,无须在代码中创建被调用者,而是依赖于外部容器的注入。
属性注入(Setter Injection)
属性注入是指 IoC 容器使用 Bean 属性的 setter 方法来注入 Bean 依赖的实例。使用属性注入应该为 Bean 提供一个无参的构造函数和属性的 setter 方法。
<bean id="magicWand" class="com.huey.dream.bean.Weapon"> <property name="type" value="Magic Wand" /> <property name="weightKg" value="9.5" /> </bean>
构造注入(Constructor Injection)
构造注入是指 IoC 容器使用 Bean 构造器来注入 Bean 依赖的实例。使用构造注入应该为 Bean 至少提供一个含参的构造函数。
根据参数名匹配
<bean id="pistol" class="com.huey.dream.bean.Weapon" > <constructor-arg name="type" value="Pistol" /> <constructor-arg name="weightKg" value="1.2" /> </bean>
根据参数位置匹配
<bean id="sword" class="com.huey.dream.bean.Weapon" > <constructor-arg index="0" value="Sword" /> <constructor-arg index="1" value="19.8" /> </bean>
根据参数类型匹配
<bean id="bow" class="com.huey.dream.bean.Weapon" > <constructor-arg type="String" value="Bow & Arrow" /> <constructor-arg type="double" value="15" /> </bean>