如何将OrmLite DAO实例自动连接到Spring Controller?

时间:2018-10-29 10:30:58

标签: spring controller dao ormlite

所以我正在使用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

1 个答案:

答案 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);
}