网站建设印花税税率,外贸soho建网站,求十大猎头公司排名,做网站做软件怎么赚钱文章目录1. Autowired和Resource的区别2. 一个接口多个实现类的处理2.1 注入时候报错情况2.2 使用Primary注解处理2.3 使用Qualifer注解处理2.4 根据业务情况动态的决定注入哪个serviceImpl1. Autowired和Resource的区别
Aurowired是根据type来匹配#xff1b;Resource可以根…
文章目录1. Autowired和Resource的区别2. 一个接口多个实现类的处理2.1 注入时候报错情况2.2 使用Primary注解处理2.3 使用Qualifer注解处理2.4 根据业务情况动态的决定注入哪个serviceImpl1. Autowired和Resource的区别
Aurowired是根据type来匹配Resource可以根据name和type来匹配默认是name匹配Aurowired是Spring定义的注解Resource是JSR250规范里面定义的注解而Spring对JSR250规范提供了支持。Autowired如果需要支持name匹配就需要配合Primary或者Qualifier注解使用来实现
2. 一个接口多个实现类的处理
public interface FileService {void getFile();
}Slf4j
Service
public class FileServiceAImpl implements FileService {Overridepublic void getFile() {log.info(调用fileServiceAImpl...);}
}Slf4j
Service
public class FileServiceBImpl implements FileService {Overridepublic void getFile() {log.info(调用fileServiceBImpl...);}
}2.1 注入时候报错情况 2.2 使用Primary注解处理 Primary表示主要的bean当存在多个相同类型的Bean的时候优先使用声明了Primary的Bean FileServiceAImpl 类添加Primary注解
Slf4j
Service
Primary
public class FileServiceAImpl implements FileService {Overridepublic void getFile() {log.info(调用fileServiceAImpl...);}
}2.3 使用Qualifer注解处理 Qualifer的作用类似于条件筛选它可以根据Bean的名字找到需要装备的目标Bean Slf4j
Service(fileServiceAImpl)
public class FileServiceAImpl implements FileService {Overridepublic void getFile() {log.info(调用fileServiceAImpl...);}
}Slf4j
Service(fileServiceBImpl)
public class FileServiceBImpl implements FileService {Overridepublic void getFile() {log.info(调用fileServiceBImpl...);}
}Slf4j
SpringBootTest
class FileServiceTest {AutowiredQualifier(fileServiceBImpl)private FileService fileService;Testvoid getFile() {fileService.getFile();}}2.4 根据业务情况动态的决定注入哪个serviceImpl 使用 ApplicationContext的getBean()方法动态指定需要用到的bean Slf4j
SpringBootTest
class FileServiceTest {Autowiredprivate ApplicationContext context;Testvoid getFile() {FileService fileService getFileService(0);fileService.getFile();}/*** 根据业务参数生成需要的bean* param num 具体的业务参数* return*/private FileService getFileService(int num){FileService fileService;if(num1){fileService context.getBean(fileServiceBImpl,FileService.class);}else {fileService context.getBean(fileServiceAImpl,FileService.class);}return fileService;}
}