一、构造器注入
1.1、BookDao接口和实现类
public interface BookDao {void save();
}
public class BookDaoImpl implements BookDao {private int connectionNum;private String databaseName;public BookDaoImpl(int connectionNum, String databaseName) {this.connectionNum = connectionNum;this.databaseName = databaseName;}public void save(){System.out.println("book dao save......" + databaseName+","+ connectionNum);}
}
1.2、BookService接口与实现类
public interface BookService {void save();
}
public class BookServiceImpl implements BookService{private BookDao bookDao;private UserDao userDao;public BookServiceImpl(BookDao bookDao,UserDao userDao) {this.bookDao = bookDao;this.userDao = userDao;}public void save(){bookDao.save();userDao.save();}
}
1.3、配置文件
<?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="bookDao" class="com.itheima.dao.impl.BookDaoImpl"><constructor-arg name="connectionNum" value="1000"/><constructor-arg name="databaseName" value="mysql"/></bean><bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl" scope="singleton"/><bean id="bookService" name="service" class="com.itheima.service.impl.BookServiceImpl"><constructor-arg name="bookDao" ref="bookDao"/><constructor-arg name="userDao" ref="userDao"/></bean>
</beans>
1.4、使用方法
public static void main(String[] args) {ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");BookService bookService = (BookService) ctx.getBean("service");bookService.save();}
1.5、总结
- BookDaoImpl和BookServiceImpl类的构造函数时有参数的,配置文件中添加constructor-arg节点
- name设置为类中的变量名称,ref是bean的id