Spring注入
时间:2011-01-27
IOC有几种类型
两种,依赖注入和依赖查找
依赖注入分几种,是哪几种?
构造器constructor依赖注入和setter依赖注入
Spring的依赖注入的核心是Bean工厂. Bean工厂负责管理组件和它们之间的依赖关系.Spring中,这种bean用来查阅所有容器管理的组件.
你的应用程序需要通过BeanFactory接口来使用Spring的DI容器.也就是说,你的程序必须创建实现了BeanFactory接口的类来配置它的Bean和依赖关系的消息.
在Spring容器内拼凑Bean叫做装配。装配Bean的时候,你是在告诉容器需要哪些Bean以及容器如何使用依赖注入将它们 藕合在一起。
我们还是来用例子讲吧:
就以最常用的学生、课程、学藉、成绩来说:
业务层:
StudentService CourseService
StudentServiceImpl CourseServiceImpl
StudentDao CourseDao
StudentDaoImpl CourseDaoImp
在业务层有两个业务组件:学生服务和课程服务。学生服务处理所有的和学生有关的事务,而课程服务负责和课程有关的功能。这些服务都通过接口来定义。
StudentService 接口如下:
public interface StudentService{
public Student getStuden(String id);
public void createStudent(Student stu);
public java.util.Set getCompletedCourse(Student stu);
}
CourseService接口如下:
public interface CourseService{
public Student getCourse(String id);
public void createCourse(Course course);
public java.util.Set getAllCourse();
public void enrollStudentInCourse(Course course,Student stu) throws CourseException;
}
StudentServiceImpl是StudentService的实现:
package com.springinaction.service.training;
public class StudentServiceImpl implements StudentService{
private StudentDao stuDao;
public StudentServiceImpl(StudentDao sDao){
stuDao=sDao;
}
public void setStudentDao(StudentDao sDao){
stuDao=sDao;
}
public Student getStudent(String id){
return stuDao.findById(id);
}
public void createStudent(Student stu){
stuDao.create(stu);
}
public java.util.Set getCompletedCourses(Student stu){
return stuDao.getCompletedCourses(stu);
}
}
Spring注入(2)
时间:2011-01-27
StudentServiceImpl将很多职责委托给了StudentDao。StudentDao处理与数据库的交互来读写学生信息。StudentDao的实现类叫StudentDaoIpl.
在这里有两种方法将StudentDao引用赋给StudentServiceImpl:通过它的构造函数或通过setStudentDao()方法。
CoureseServiceImpl是CoureseService的实现:
package com.springinaction.service.training;
import java.util.iterator;
import java.util.Set;
public class CourseServiceImpl implements CourseService{
private CourseDao courseDao;
private StudentService studentService;
private int maxStudents;
public CourseServiceImpl(CourseDao courDao){
this.courseDao=cou
|