package com.github.yingzhuo.spring.auto.jdbm2; import jdbm.RecordManager; import jdbm.RecordManagerFactory; import org.springframework.beans.factory.FactoryBean; import java.io.Closeable; import java.io.IOException; public class RecordManagerFactoryBean implements FactoryBean<RecordManager>, Closeable { private RecordManager lazyInit = null; private String filename; public RecordManagerFactoryBean(String filename) { this.filename = filename; } @Override public RecordManager getObject() throws Exception { if (lazyInit == null) { lazyInit = RecordManagerFactory.createRecordManager(filename); } return lazyInit; } @Override public void close() throws IOException { if (lazyInit != null) { lazyInit.close(); } } @Override public Class<?> getObjectType() { return RecordManager.class; } @Override public boolean isSingleton() { return true; } public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } }