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动态注入接口实现类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springboot -sse -flux 服务器推送消息的方法
这篇文章主要介绍了springboot -sse -flux 服务器推送消息的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2023-11-11
解决mac最新版intellij idea崩溃闪退crash的问题
这篇文章主要介绍了解决mac最新版intellij idea崩溃闪退crash的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09
超简单的java获取鼠标点击位置坐标的实例(鼠标在Jframe上的坐标)
在Java窗体Jframe上获取鼠标点击的坐标,其中使用了匿名内部类,实例代码非常简单易懂,大家可以学习一下2018-03-03
java 中Comparable与Comparator详解与比较
这篇文章主要介绍了java 中Comparable与Comparator详解与比较的相关资料,需要的朋友可以参考下2017-04-04
BeanUtils.copyProperties复制属性失败的原因及解决方案
这篇文章主要介绍了BeanUtils.copyProperties复制属性失败的原因及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08


最新评论