【问题标题】:Abstraction and Spring - Multiple children抽象和 Spring - 多个孩子
【发布时间】:2018-03-22 15:50:48
【问题描述】:

我正在尝试使用 Spring 制作 Web 应用程序,并且我的类(控制器和服务)正在使用抽象来避免代码重复。知道了,这就是我的结构:

public abstract class AbstractController {
    @Autowired
    private AbstractService serviceAbs;
    .
    .
    .
}

@Controller
@RequestMapping(value = "/webService")
public class Service1Controller extends AbstractController {
    @Autowired
    Service1Service service;

    @RequestMapping(value = { "..." })
    public final ModelAndView addService(...) {
    }
    .
    .
    .
}

@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public class AbstractService {
    @Autowired
    protected ServiceDAO serviceDAO;

    public final ModelAndView addService(...) {
    }
    .
    .
    .
}

@Service
public class Service1Service extends AbstractService {
    .
    .
    .
}

这很好用,但是当我尝试将另一个孩子添加到 AbstractService 时,Spring 无法工作,即使我使用 Qualifier 注释,我也不知道该怎么办了。 (我还在学英语,如有错误请见谅)

【问题讨论】:

  • 您需要在其中一个子类中添加@Primary注解
  • 去掉抽象服务上的@Service
  • 为什么AbstractService 会成为@Service 服务??

标签: java spring abstraction


【解决方案1】:

其实我需要做一个抽象类的泛型实例,然后使用Qualifier注解,所以我创建了:

@Service
public class GenericService extends AbstractServiceService {
    .
    .
    .
}

然后,在 abstractController 我更改属性:

@Autowired
@Qualifier("genericService")
private AbstractService serviceAbs;

感谢 Basil Battikhi,他的建议确实让我了解了其他一些注释。

【讨论】:

    猜你喜欢
    • 2015-03-05
    • 2011-10-07
    • 1970-01-01
    • 2017-06-04
    • 2014-09-17
    • 2020-06-21
    • 1970-01-01
    • 2013-09-13
    • 2012-02-28
    相关资源
    最近更新 更多