我有这样的想法:
public abstract class Handler {
protected ItemRepository itemRepository;
public Handler(ItemRepository itemRepository) {
this.itemRepository = itemRepository;
}
}
public class SpecificHandler1 extends Handler {
public SpecificHandler1(ItemRepository itemRepository) {
super(itemRepository);
}
}
public class SpecificHandler2 extends Handler {
public SpecificHandler2(ItemRepository itemRepository) {
super(itemRepository);
}
}
我不想将itemrepository作为每个特定处理程序的参数传递,因为它总是itemrepository的同一个示例。我只想通过itemrepository一次。我不是在使用springboot,它会让我的生活更容易使用@autowired注解。你知道吗?谢谢
1条答案
按热度按时间55ooxyrt1#
我不想将itemrepository作为每个特定处理程序的参数传递,因为它总是itemrepository的同一个示例。
虽然这不是干的(不要重复你自己),你做的是正确的方式。
理想情况下,类的依赖关系应该在对象示例化时或不适合通过setter设置时设置。
为了实现这一点,子类必须声明
itemRepository
作为构造函数的参数,最坏情况下作为setter。不管有没有Spring Boot,你都会遇到同样的“问题”(事实上这不是问题)。
我不推荐的一个简单的干燥方法是“隐藏”这对夫妇
itemRepository
抽象类中的依赖关系:但作为一个副作用,您得到了一个自
itemRepository
不是可见的依赖项。