spring - 如何将 OrmLite DAO 实例自动装配到 Spring 控制器中?
问题描述
所以我使用 SpringBootApplication 来创建一个快速的服务器应用程序。我也想在这个应用程序中保持持久性,所以我添加了 OrmLite 来处理我的 SQLite 数据库。
实例化 OrmLite DAO 需要ConnectionSource
数据库。我如何使用我的控制器处理请求来@Autowire
实例化 DAO connectionSource
,以便我可以返回他们从数据库中请求的任何内容?我还有一个创建与数据库的连接的 databaseHelper 类,它在应用程序主方法中被实例化。
例如控制器:
@RestController
public class GreetingController {
@AutoWired
GreetingDao greetingDao;
//how does this instance have the connectionSource Dao to the database?
}
道:
@Component
public class GreetingDao {
Dao<int, Greeting> greetingDao;
public GreetingDao(ConnectionSource connectionSource) {
greetingDao = Dao.createDao(connectionSource, Greeting.class);
}
}
解决方案
好吧,在进一步阅读之后,我意识到我可以为我的 DAO 类设置默认构造函数,然后当我的应用程序主被调用时,我只需在 ApplicationContext 中为我的 DAO 设置 connectionSource。
然后,当我@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);
}
推荐阅读
- sql - 如何在 Microsoft SQL Server Management Studio 2014 中更新表
- svn - 从旧版本的主干分支出来并合并回主干的 HEAD
- boost - MIPS 平台的交叉编译 Boost
- node.js - WriteStream.emit 错误:我在这段代码中做错了什么
- html - Vue-select 下拉菜单无法正常工作
- xamarin - 如何更新sqlite中对应于id的表
- javascript - 如何将日期时间形式 Net 转换为 JavaScript
- tomcat - Logstash tomcat 堆栈跟踪解析失败
- google-cloud-functions - Google Cloud Function 错误“OperationError:code=3,message=Function failed on loading user code”
- jquery - 如何在保持单击的启用的同时禁用分组复选框?