我想創建一個泛型類,它將幫助我減少樣板代碼。我正在使用Spring 3(MVC)和Hibernate 4。如何實例化泛型spring bean?
類看起來是這樣的:
@Repository("AutoComplete")
public class AutoComplete<T extends Serializable> implements IAutoComplete {
@Autowired
private SessionFactory sessionFactory;
private Class<T> entity;
public AutoComplete(Class<T> entity) {
this.setEntity(entity);
}
@Transactional(readOnly=true)
public List<String> getAllFTS(String searchTerm) {
Session session = sessionFactory.getCurrentSession();
return null;
}
public Class<T> getEntity() {
return entity;
}
public void setEntity(Class<T> entity) {
this.entity = entity;
}
}
我實例化的bean是這樣的:
IAutoComplete place = new AutoComplete<Place>(Place.class);
place.getAllFTS("something");
如果我運行代碼,我得到 「沒有發現默認的構造函數」 的異常。
Session session = sessionFactory.getCurrentSession();
這是爲什麼,我該如何解決這個問題:如果我添加一個默認的構造函數,我在這行獲得空指針異常?我猜這個問題是因爲bean沒有被Spring本身實例化,所以它不能自動裝載字段。我想自己實例化bean,但如果可能的話,仍然會對它進行spring管理。
你看過SpringData嗎?您不必爲存儲庫編寫像這樣的泛型類。 –