zoukankan      html  css  js  c++  java
  • Spring @Autowired注解用在集合上面,可以保持接口的所有实现类

    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

  • 相关阅读:
    Python爬虫入门之Urllib库的高级用法
    Python爬虫入门之Urllib库的基本使用
    Python中对字符串的操作
    Python2.x爬虫入门之URLError异常处理
    Python编写的记事本小程序
    Python2.X和Python3.X中Tkinter模块的文件对话框、下拉列表的不同
    记录面试龙腾简合-java开发工程师经历
    解决npm ERR! Please try running this command again as root/Administrator. 问题
    ionic3/4 使用NavController 返回两层的方式
    点击iframe窗口里的超链接,打开新页面的方式
  • 原文地址:https://www.cnblogs.com/junge8618/p/8213953.html
Copyright © 2011-2022 走看看