【问题标题】:How do I autowire OrmLite DAO instances into Spring Controllers?如何将 OrmLite DAO 实例自动装配到 Spring 控制器中?
【发布时间】:2018-10-29 10:30:57
【问题描述】:

所以我正在使用 SpringBootApplication 来创建一个快速的服务器应用程序。 我也想在这个应用程序中保持持久性,所以我添加了 OrmLite 来处理我的 SQLite 数据库。

实例化 OrmLite DAO 需要数据库的 ConnectionSource。我如何 @Autowire 这个实例化的 DAO 与 connectionSource 到我的控制器处理请求,以便我可以返回他们从数据库中请求的任何内容?我还有一个创建与数据库的连接的 databaseHelper 类,它在应用程序的 main 方法中被实例化。

例如控制器:

@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);
 }

}

【问题讨论】:

  • 在你的应用上下文中定义一个ConnectionSource类型的bean。

标签: spring controller dao ormlite


【解决方案1】:

好的,所以在进一步阅读之后,我意识到我可以为我的 DAO 类设置默认构造函数,然后当我的应用程序 main 被调用时,我只需在 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);
}

【讨论】:

    猜你喜欢
    • 2014-01-20
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 2015-12-23
    • 1970-01-01
    • 2017-05-10
    相关资源
    最近更新 更多