第一中属性注入也就是setter注入(为属性提供相应的set和get方法)
package com.lbx.service.impl;
import com.lbx.dao.UserDao;
import com.lbx.po.User;
import com.lbx.service.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao;
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public void add(User user) {
userDao.add(user);
}
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
beans.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="userDao" class="com.lbx.dao.impl.UserDaoImpl"></bean>
<!-- <bean id="userDao2" class="com.lbx.dao.impl.UserDaoImpl2"></bean> -->
<bean id="userService" class="com.lbx.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property> <!-- 这是一种Set注入,也就是调用相应的set方法,还有构造方法注入 -->
<property name="name"><value>libinxuan</value> </property>
<property name="age"><value>22</value> </property>
<!--
也可以这样写
<property name="userDao">
<ref bean="userDao"></ref>
</property>
-->
<!--<constructor-arg> 这是一种构造方法注入,参数不好处理,可以是参数类型处理和index来处理
<ref bean="userDao"></ref>
</constructor-arg> -->
</bean>
</beans>
第二种就是构造函数注入(提供相应的构造方法)多个参数可按类型和索引来区分,有时候还得同时用类型和索引来区分
package com.lbx.service.impl;
import com.lbx.dao.UserDao;
import com.lbx.po.User;
import com.lbx.service.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao;
public UserServiceImpl(UserDao userDao) {
super();
this.userDao = userDao;
}
@Override
public void add(User user) {
userDao.add(user);
}
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
bean.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="userDao" class="com.lbx.dao.impl.UserDaoImpl"></bean> <!-- <bean id="userDao2" class="com.lbx.dao.impl.UserDaoImpl2"></bean> --> <bean id="userService" class="com.lbx.service.impl.UserServiceImpl"> <!--<property name="userDao" ref="userDao"></property> 这是一种Set注入,也就是调用相应的set方法,还有构造方法注入 --> <!-- 也可以这样写 <property name="userDao"> <ref bean="userDao"></ref> </property> --> <constructor-arg> <!-- 这是一种构造方法注入,参数不好处理,可以是参数类型处理和index来处理 --> <ref bean="userDao"></ref> </constructor-arg> </bean> </beans>
第三种就是接口注入(一般只用属性注入也是就是使用setter注入)