Как автоматически подключить экземпляры OrmLite DAO в Spring Controllers? - PullRequest
0 голосов
/ 29 октября 2018

Поэтому я использую SpringBootApplication для создания быстрого серверного приложения. Я хочу сохранить постоянство в этом приложении, поэтому я добавил OrmLite для обработки моей базы данных SQLite.

Для создания DAO OrmLite требуется ConnectionSource для базы данных. Как мне @Autowire создать этот экземпляр DAO с connectionSource для моего контроллера, обрабатывающего запросы, чтобы я мог вернуть все, что они запросили из базы данных? У меня также есть класс databaseHelper, который создает соединение с базой данных, он создается в основном методе приложения.

Например, контроллер:

@RestController
public class GreetingController {

 @AutoWired
 GreetingDao greetingDao;
 //how does this instance have the connectionSource Dao to the database?

}

DAO:

@Component
public class GreetingDao {
 Dao<int, Greeting> greetingDao;

 public GreetingDao(ConnectionSource connectionSource) {
  greetingDao = Dao.createDao(connectionSource, Greeting.class);
 }

}

1 Ответ

0 голосов
/ 29 октября 2018

Хорошо, после прочтения этого, я понял, что могу просто установить конструкторы по умолчанию для своих классов DAO, а затем, когда вызывается моя главная прикладная программа, я просто устанавливаю connectionSource для своих DAO в ApplicationContext.

Тогда, когда у меня есть @Autowire для моих DAO внутри классов контроллера, у них будет тот же экземпляр, который я установил для моего connectionSource.

//inside @SpringBootApplication class
public void main(String [] args) {
 ConfigurableApplicationContext context = SpringApplication.run(Application.class, args)

 DatabaseHelper dbHelper = context.getBean(DatabaseHelper.class)
 dbHelper.connect();

 GreetingAccessor greetingAccessor = context.getBean(GreetingAccessor.class)
 greetingAccessor.createDao(dbHelper.getConnectionSource);
}

//inside GreetingAccessor
public void createDao(ConnectionSource connectionSource) {
 greetingDao = DaoManager.createDao(connectionSource, Greeting.class);
}
...