在笔记(1)中我们提到过spring提供了两种的注入方式——set方法注入与构造器注入。
set方法注入
顾名思义,set方法就是根据每个属性的set方法注入,所以在写javabean(VO 类或者POJO类的时候)最好为每个属性生成set方法。方便其他类注入。在applicationContext.xml中,我们就可以如下方法配置。下面几个例子:
<bean id="UserBean" class="com.test.bean.User">
<property name="str">
<value type="java.lang.String">hello world</value>
</property>
</bean>
<bean id="UserDao" class="com.test.dao.impl.UserDAOImpl" scope="singleton">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="userServiceTarget" class="com.test.service.impl.UserServiceImpl">
<property name="userDao" ref="UserDao"></property>
</bean>
2、构造器注入。就是根据类的有参构造函数注入。建议在生成javabean类时也生成无参构造函数。该方法当参数较多时,容易混乱。不如set方法简明。
几个例子:
<bean id="user" class="com.test.bean.User">
<!--基本类型的注入-->
<constructor-arg value="1" type="int"></constructor-arg>
<constructor-arg value="str" type="java.lang.String"></constructor-arg>
<constructor-arg value="123" type="java.lang.String"></constructor-arg>
</bean>
<!--对象的注入-->
<!-- 配置创建UserDAOImpl的实例 -->
<bean id="userDAO" class="com.springtest1.dao.UserDAOImpl">
</bean>
<!-- 配置创建UserBizImpl的实例 -->
<bean id="userBiz" class="com.springtest1.biz.UserBizImpl">
<!-- 依赖注入数据访问层组件 -->
<constructor-arg ref="userDAO"></constructor-arg>
</bean>