1. 使用构造函数方法,给service中的属性传值(过于僵硬)
- 要求: 类中需要提供一个对应参数列表的构造函数
- 涉及的标签:
- constructor-arg
- 属性:
- index:指定参数在构造函数参数列表的索引位置
- type:指定参数在构造函数中的数据类型
- name:指定参数在构造函数中的名称 (多用哦)
- value:能赋的值是基本数据类型和String类型
- ref:能赋的值是其他bean类型,也就是说,在配置文件中配置过的bean
- 优势:在获取bean对象时,注入数据是必须的操作,否则对象无法创建成功
- 弊端:改变了bean对象的实例化方式,使我们在创建对象时,如果用不到这些数据,也必须提供
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="accountService1" class="xust.student.service.Impl.AccountServiceImpl">
<constructor-arg name="name" value="Wxy"></constructor-arg>
<constructor-arg name="age" value="23"></constructor-arg>
<constructor-arg name="birthday" ref="now"></constructor-arg>
</bean>
<bean id="now" class="java.util.Date"></bean>
</beans>
2. 通过配置文件给bean中的属性传值:使用set方法(常用)
- 要求: 类中需要提供对应参数的set方法
- 涉及的标签:
- property
- 属性:
- name:找的时类中的set方法后面的部分
- value:能赋的值是基本数据类型和String类型
- ref:能赋的值是其他bean类型,也就是说,在配置文件中配置过的bean
- 使用set方式时,如果有有参构造函数,则会出现冲突,有参构造优先
- 优势:创建对象时没有明确的限制,可以直接使用默认构造函数
- 弊端:如果某个成员必须有值,则获取对象是有可能set方法没有执行
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="accountService2" class="xust.student.service.Impl.AccountServiceImpl">
<property name="name" value="Wxy"></property>
<property name="age" value="23"></property>
<property name="birthday" ref="now"></property>
</bean>
<bean id="now" class="java.util.Date"></bean>