我正在使用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
Collectionodo: Check type somehow
String servType = "local";
for(DevService s: services)
{
if(servType.equals(s.getName())
{
// Call service methods
break;
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。