CourseService課程接口有2個子類,HistroyCourseServiceImpl和MathsCourseServiceImpl
public interface CourseService { String getCourseName(); void attendCourse(); }
package com.junge.spring.demo.service.course.impl;
import com.junge.spring.demo.service.course.CourseService;
import org.springframework.stereotype.Service;
import java.util.logging.Logger;
/**
* 歷史課
*
* @author liuxj
* @create 2018-01-06 12:46
*/
@Service
public class HistroyCourseServiceImpl implements CourseService {
private static final Logger logger = Logger.getLogger(HistroyCourseServiceImpl.class.getName());
@Override
public String getCourseName() {
return "歷史";
}
@Override
public void attendCourse() {
System.out.println("上歷史課");
logger.info("上歷史課");
}
}
package com.junge.spring.demo.service.course.impl;
import com.junge.spring.demo.service.course.CourseService;
import org.springframework.stereotype.Service;
import java.util.logging.Logger;
/**
* 數學課
*
* @author liuxj
* @create 2018-01-06 12:49
*/
@Service
public class MathsCourseServiceImpl implements CourseService {
private static final Logger logger = Logger.getLogger(MathsCourseServiceImpl.class.getName());
@Override
public String getCourseName() {
return "數學課";
}
@Override
public void attendCourse() {
System.out.println("上數學課");
logger.info("上數學課");
}
}
學生類有接口attendAllCourse,參加所有課程
public interface StudentService { void addStudent(); Student getStudent(int id); void updateStudent(Student student); void attendAllCourse(Student student); } package com.junge.spring.demo.service.impl; import com.junge.spring.demo.model.Student; import com.junge.spring.demo.service.StudentService; import com.junge.spring.demo.service.course.CourseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Set; import java.util.logging.Logger; /** * 業務實現類 * * @author liuxj * @create 2018-01-06 11:24 */ @Service public class StudentServiceImpl implements StudentService { private static final Logger logger = Logger.getLogger(StudentServiceImpl.class.getName()); /** * @Autowired注解用在集合上面,可以保持接口的所有實現類 */ @Autowired private Set<CourseService> courseSet; @Override public void addStudent() { System.out.println("addStudent"); logger.info("addStudent"); } @Override public Student getStudent(int id) { System.out.println("getStudent id=" + id); logger.info("getStudent id=" + id); Student student = new Student(); student.setId(id); student.setAge(22); student.setName("張勝男"); return student; } @Override public void updateStudent(Student student) { System.out.println("updateStudent info:" + student); logger.info("updateStudent info:" + student); } @Override public void attendAllCourse(Student student) { if (!CollectionUtils.isEmpty(courseSet)) { for (CourseService service : courseSet) { service.attendCourse(); } } } }
調用學生上課接口,可以打印所有課程,說明CourseService所有的實現類都注冊到集合courseSet