所以我正在使用SpringBootApplication创建一个快速的服务器应用程序。 我也希望在该应用程序中具有持久性,因此我添加了OrmLite来处理我的SQLite数据库。
实例化OrmLite DAO需要向数据库添加ConnectionSource
。我该如何@Autowire
将此connectionSource
实例化的DAO @RestController
public class GreetingController {
@AutoWired
GreetingDao greetingDao;
//how does this instance have the connectionSource Dao to the database?
}
给处理请求的控制器,以便我可以从数据库中返回它们的所有请求?我还有一个databaseHelper类,用于创建与数据库的连接,该类在应用程序main方法中实例化。
例如控制器:
@Component
public class GreetingDao {
Dao<int, Greeting> greetingDao;
public GreetingDao(ConnectionSource connectionSource) {
greetingDao = Dao.createDao(connectionSource, Greeting.class);
}
}
DAO:
6.0.3
答案 0 :(得分:0)
好吧,在进一步阅读之后,我意识到我可以为DAO类设置默认构造函数,然后在调用应用程序主程序时,只需在ApplicationContext中为DAO设置connectionSource。
然后,当我在控制器类中为DAO提供@Autowire
时,它们将具有与我的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);
}