定型コードを減らすのに役立つジェネリック クラスを作成しようとしています。これには Spring 3 (MVC) と Hibernate 4 を使用しています。
クラスは次のようになります。
@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");
コードを実行すると、「デフォルトのコンストラクターが見つかりません」という例外が発生します。デフォルトのコンストラクターを追加すると、次の行で null ポインター例外が発生します。
Session session = sessionFactory.getCurrentSession();
これはなぜですか、どうすればこの問題を解決できますか? 問題は、Bean が Spring 自体によってインスタンス化されていないため、フィールドを自動配線できないためだと推測しています。自分で Bean をインスタンス化したいのですが、可能であれば、Spring で管理します。