Springboot根据配置文件动态注入接口实现类详解
Springboot动态注入接口实现类
最近接到一个需求,产品的用户模块要接入第三方用户系统(skyview),但是又不能影响原有的登录模块,并且需要通过配置文件来决定使用平台的用户系统还是第三方用户系统。
原先的用户模块已经开发好了,接口也设计好了,所以只需要再开发第三方用户系统的接口实现就好了。
用户接口:
public interface UserService { String login(); }
平台用户接口实现:
@Service("UserServiceImpl") public class UserServiceImpl implements UserService { @Override public String login() { return "zeus"; } }
第三方平台接口实现:
@Service("skyviewUserServiceImpl") public class SkyviewUserServiceImpl implements UserService { @Override public String login() { return "skyview"; } }
功能已经开发好了,问题是如何在Controller层动态决定使用那个实现类?
通过@Qualifier和@Resource都可以指定接口的实现类,不同的是,@Qualifier注解的参数必须是常量,而@Resource注解的参数可以加入变量,变量可以在配置文件中配置。
@RequestMapping("/user") @RestController public class UserController { @Resource(name= "${system.usercenter}UserServiceImpl") private UserService userService; @GetMapping("/login") public String login(){ return userService.login(); } }
application.yaml
server: port: 8081 system: usercenter: skyview
到此这篇关于Springboot根据配置文件动态注入接口实现类详解的文章就介绍到这了,更多相关Springboot动态注入接口实现类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
关于@ApiModel和@ApiModelProperty的使用
这篇文章主要介绍了关于@ApiModel和@ApiModelProperty的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-11-11Springboot 上传文件或头像(MultipartFile、transferTo)
本文主要介绍了Springboot 上传文件或头像(MultipartFile、transferTo),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-04-04
最新评论