【发布时间】:2018-06-22 11:25:01
【问题描述】:
我有一个小问题。这可能是微不足道的,但我以前从未遇到过。
我有通用接口和它的通用实现。我想自动接线,但发生了错误。以下是详细信息:
界面
@Service
public interface Serializing<T extends Serializable> {
String serialize(T toBeSerialized);
T deserialize(String toBeDeserialized, Class<T> resultType);
}
实施
@Service
public class JsonSerializer<T extends Serializable> implements Serializing<T> {
/** code **/
}
自动接线尝试
private NoteDAO noteDAO;
@Qualifier("jsonSerializer")
private Serializing<UserComment> serializer;
@Autowired
public NoteController(NoteDAO noteDAO, Serializing<UserComment> serializer) {
this.noteDAO = noteDAO;
this.serializer = serializer;
}
错误
Parameter 1 of constructor in somepackagepath.NoteController required a bean of type 'anotherpackagepath.Serializing' that could not be found.
我想让它尽可能简单。我已经检查了网络,但我发现只有关于在配置中定义我的确切 bean。如果可能的话,我宁愿避免它。
【问题讨论】:
-
如果你把
@Qualifier放在构造函数中会怎样? -
不适用于构造函数。我也删除了它,只是为了确定(因为现在只有一个实现)但仍然没有找到任何东西。
-
你的项目结构是什么?组件扫描器是否能够找到 bean?
-
@Peteef 我的意思是
serializer参数 ->@Qualifier("jsonSerializer") Serializing<UserComment> serializer -
是的,它能够在同一个包中找到 bean。
标签: java spring generics autowired