Springboot动态注入接口实现android类
最近接到一个需求,产品的用户模块要接入第三方用户系统(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都可以指定接口的实现SjQvbwpEKd类,不同的是,@Qualifier注解的参数必须是常量,而@Resource注解的参数可以加入变量,变量可以在配置文件中配置。
@RequestMapping("/user") @RestController public class UserController { @Resource(name= "${system.usercenter}jsUserServiceImpl") private UserService userService; @Ge编程客栈tMapping("/login") public String login(){ return userService.login(); } }
application.yaml
server: port: 8081 system: usercenter: skyview
到此这篇关于Springboot根据配置文件动态注入接口实现类详解的文章就介绍到这了,更多相关Springboot动态注入接口实现类内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论