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
Spring @Autowired注解用在集合上面,可以保持接口的所有实现类的更多相关文章
- Spring课程 Spring入门篇 4-3 Spring bean装配(下)之Autowired注解说明2 集合运用
课程链接: 本节主要讲了以下几块内容 1 注解相关解析 2 代码演练 集合for循环的使用 2.1 list集合应用 2.2 map集合应用 2.3 集合排序(只对list有效,对map无效(list ...
- Spring @Autowired 注解 学习资料
Spring @Autowired 注解 学习资料 网址 Spring @Autowired 注解 https://wiki.jikexueyuan.com/project/spring/annota ...
- Spring @Autowired 注解自动注入流程是怎么样?
面试中碰到面试官问:"Spring 注解是如果工作的?",当前我一惊,完了这不触及到我的知识误区了吗?,还好我机智,灵机一动回了句:Spring 注解的工作流程倒还没有看到,但是我 ...
- Spring@Autowired注解
@Autowired注解可以对成员变量.方法和构造函数进行标注,来完成自动装配的工作. 注意:@Autowired默认是按照类型来注入的. 看下面的例子:例子是以对成员变量(field)为例进行的 p ...
- Java集合框架之四大接口、常用实现类
Java集合框架 <Java集合框架的四大接口> Collection:存储无序的.不唯一的数据:其下有List和Set两大接口. List:存储有序的.不唯一的数据: Set:存储无序的 ...
- Spring@Autowired注解与自动装配
1 配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss ...
- 【转】Spring@Autowired注解与自动装配
1 配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss ...
- Spring @Autowired注解在非Controller中注入为null
问题描述 今天在写一个工具类,里面用了@Autowired注入了StringRedisTemplate以及RedisTemplate时,在template.opsForValue().set(key, ...
- Spring@Autowired注解与自动装配(转发)
1 配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss ...
随机推荐
- vs2010打开qt的.pro文件时错误解决办法
注意:qt creator工程中一般都已经存在*.pro文件,里面存放着一些自己配置的包含头文件和lib库文的信息,最好不要再重新使用qmake -project生成,若重新生成,则可能要重新增加配置 ...
- Spring 属性注入(一)JavaBean 内省机制在 BeanWrapper 中的应用
Spring 属性注入(一)JavaBean 内省机制在 BeanWrapper 中的应用 Spring 系列目录(https://www.cnblogs.com/binarylei/p/101174 ...
- linux-ubuntu 下R无法安装rjava模块的原因及解决方案
错误信息: 没有 /usr/lib/jvm/default-java/jre/bin/java 原因: R找不到java作为依赖 解决方案: (1) 如果你没有安装java,请先安装java. (2) ...
- tomcat优化(转)
tomcat优化 Activiti 分享牛 2017-02-08 1132℃ 本文重点讲解tomcat的优化. 基本优化思路: 1. 尽量缩短单个请求的处理时间. 2. ...
- Zxing2.1扫描取景框变形问题解决
修改竖屏扫描的贴子,2.0之前的都很适用.可是到了2.1,有些贴子的做法可以将扫描框改为竖屏,但是取景框里扫描到的东西是变形的(扁的),本人仔细研究一番,终于解决了这个问题,下面贴出解决办法: 1.修 ...
- DockerDesktop简单安装和使用
一.在windows10下,安装DockerDesktop: 1.检查windows版本为企业版或专业版,并开启Hyper-v系统设置:电脑的控制面板->程序->启用或关闭Windows功 ...
- Sprign中常用注解
1.@Component 创建类对象,相当于配置<bean/> 2.@Service 与 @Component功能相同 2.1写在ServiceImpl类上 (建议在ServiceImpl ...
- oracle 查看表行数所占空间大小
最新数据库空间有感觉捉急了,上次,删了些数据空了800+G,撑了一个多月,现在还有400+G,每天10G的增量,多少空间也感觉不够用啊. 不能加硬盘,就只有删数据了.. 删数据,人懒,直接找表行最多, ...
- win8快捷键大全分享,非常全
Windows 8全新的Metro操作体验,对于没有平板只能用快捷键来提高效率了.全面的Windows 8快捷键,请下载微软官方的Windows 8快捷键表格,快捷键全记完整个人都斯巴达了..其实常用 ...
- UVaLive 3490 Generator (KMP + DP + Gauss)
题意:随机字母组成一个串,有一个目标串,当这个由随机字母组成的串出现目标串就停止,求这个随机字母组成串的期望长度. 析:由于只要包含目标串就可以停止,所以可以先把这个串进行处理,也就是KMP,然后dp ...