实现service接口的业务类
构造方法注入
/**
* @author DELL
* 业务层实现类
*/
public class AccountServiceImpl implements IAccountService {
/**
* 经常变化的数据,并不适合构造方法注入
*/
private String name;
private Integer age;
private Date bitthday;
public AccountServiceImpl(String name, Integer age, Date bitthday) {
this.name = name;
this.age = age;
this.bitthday = bitthday;
}
@Override
public void saveAccount() {
System.out.println("service中的saveAccount方法执行了...");
}
}
bean.xml中的配置
<!-- 构造函数注入 -->
<bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl">
<constructor-arg name="name" value="张三"></constructor-arg>
<constructor-arg name="age" value="18"></constructor-arg>
<constructor-arg name="bitthday" ref="now"></constructor-arg>
</bean>
<bean id="accountDao" class="com.itheima.dao.impl.AccountDaoImpl"></bean>
<!-- 配置一个日期对象 -->
<bean id="now" class="java.util.Date"/>
set方法的注入
/**
* @author DELL
* 业务层实现类
*/
public class AccountServiceImpl2 implements IAccountService {
/**
* 经常变化的数据,并不适合构造方法注入
*/
private String name;
private Integer age;
private Date bitthday;
public void setName(String name) { this.name = name; }
public void setAge(Integer age) { this.age = age; }
public void setBitthday(Date bitthday) { this.bitthday = bitthday; }
@Override
public void saveAccount() {
System.out.println("service中的saveAccount方法执行了...");
}
}
bean.xml的配置
<!-- set方法注入
涉及的标签 property
出现的位置: bean标签的内部
-->
<bean id="accountService2" class="com.itheima.service.impl.AccountServiceImpl2">
<property name="name" value="张三"></property>
<property name="age" value="18"></property>
<property name="bitthday" ref="now"></property>
</bean>
复杂类型的注入
- 只需要记住两种通用的
List 和 Map
/**
* @author DELL
* 业务层实现类
*/
public class AccountServiceImpl3 implements IAccountService {
private String[] myStrs;
private List<String> myList;
private Set<String> myset;
private Map<String,String> myMap;
private Properties myProps;
public void setMyStrs(String[] myStrs) { this.myStrs = myStrs; }
public void setMyList(List<String> myList) { this.myList = myList; }
public void setMyset(Set<String> myset) { this.myset = myset; }
public void setMyMap(Map<String, String> myMap) { this.myMap = myMap; }
public void setMyProps(Properties myProps) { this.myProps = myProps; }
@Override
public void saveAccount() {
System.out.println("service中的saveAccount方法执行了...");
System.out.println(Arrays.toString(myStrs));
System.out.println(myList);
System.out.println(myset);
System.out.println(myMap);
System.out.println(myProps);
}
}
<!-- 复杂类型的注入/集合类型的注入 -->
<bean id="accountService3" class="com.itheima.service.impl.AccountServiceImpl3">
<property name="myStrs">
<array>
<value>AA</value>
<value>BB</value>
<value>CC</value>
</array>
</property>
<property name="myList">
<list>
<value>AA</value>
<value>BB</value>
<value>CC</value>
</list>
</property>
<property name="myset">
<set>
<value>AA</value>
<value>BB</value>
<value>CC</value>
</set>
</property>
<property name="myMap">
<props>
<prop key="testc">ccc</prop>
<prop key="testd">ddd</prop>
</props>
</property>
<property name="myProps">
<map>
<entry key="testA" value="aaa"></entry>
<entry key="testB">
<value>bbb</value>
</entry>
</map>
</property>
可以发现List与Set、String[]的配置一样但是Map和Properties配置可以互换