java – Dyamically在Spring中选择服务实现

我正在使用spring 3.2,并希望根据条件在我的控制器中动态选择服务实现.考虑我有一个接口和两个实现如下:

public interface DevService {
   public void add(Device device);
}

public class DevServiceImpl implements DevService {
    public void add(Device device) {
    }
}

public class RemoteDevServiceImpl implements DevService {
    public void add(Device device) {
    }
}

所以在我的控制器中,根据是要在本地站点还是远程站点上执行操作,我需要在本地执行它或者向远程站点发送命令来执行它.基本上,用户点击的站点确定要调用哪个服务.谁能建议一个干净的方法来实现这一目标?

最佳答案
假设您在生产环境中需要两种实现(如果不是 – 使用Spring配置文件在环境之间清楚地分割bean).简单的方法是:

interface DevService
{
   void add(Device d);
   String getName();
}

@Service("devServiceLocal")
class DevServiceLocalImpl implements DevService
{
   void add(Device d) {...}
   String getName() {return "local";}
}

class Controller
{
   @Autowired
   Collection

相关文章

Spring Cloud为Spring Boot应用程序提供Netflix OSS集成。 提供的功能模块包括服务发现(Eureka),断路...
Spring Cloud 学习笔记;maven配置;入门学习;基于Spring Boot 实现;服务端配置,客户端配置;
可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的...
Spring中各种方式进行日期时间处理,有作用于单个实体的,也有作用于全局的,有作用于请求入参的,有作...
跨域资源共享(Cross-origin resource sharing)(CORS)是W3C的标准,大部分的浏览器都实现了这个标准...
Spring Boot使创建基于Spring的应用程序变得轻松,大部分的SpringBoot应用程序都只需要很少的Spring配置...