开发者

Springboot根据配置文件动态注入接口实现类详解

开发者 https://www.devze.com 2023-11-09 14:30 出处:网络 作者: 小诸葛的博客
Springboot动态注入接口实现android类 最近接到一个需求,产品的用户模块要接入第三方用户系统(skyview),但是又不能影响原有的登录模块,并且需要通过配置文件来决定使用平台的用户系统还是第三方用户系统。

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)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号