我需要一个接口,然后在不同的maven模块中有两个实现。两个impl服务都看到带有接口的api模块但它们没有看到对方。
有一个默认实现,然后是事务实现。我想只需加载事务impl服务并调用默认的impl服务。像这样:
package my.app.core.api;
public interface MyService {
boolean process();
}
package my.app.core.impl
@Service
public class MyServiceImpl implements MyService {
@Override
public boolean process() {
// do something cool...
}
}
package my.app.somewhere.else.impl
@Service
@Transactional
public class TransactionalMyServiceImpl implements MyService {
@Autowire
private MyService myService;
@Override
public boolean process() {
myService.process();
}
}
是否可以或我需要@Autowire
显式MyServiceImpl
而不是接口?这意味着将maven依赖性添加到my.app.somewhere.else.impl.pom
。
答案 0 :(得分:4)
您可以为您的服务指定不同的名称,如下所示:
@Service
@Qualifier("transactionalMyService")
然后当您自动装配时,您可以使用名称:
@Autowired
@Qualifier("transactionalMyService")
private MyService myService;