Spring中装配DAO
在我的上个博客中对Spring的JDBC模板类进行了源码分析。我们在使用时只需要使用JdbcTemplate类就能完成数据库操作。下面我们看一个例子:
1、DAO实现类
?
从上面我们可以看出,我们在进行数据库操作时只需要JdbcTemplate类就可以完成所有操作。在DAO的实现类中并没有看到数据库连接、关闭等操作。只是根据具体的CRUD操作用面向对象的方式来传递查询参数和返回领域对象DO。
然而,我们的Spring中DAO是怎样来反问数据库的呢?
实际上在讲JdbcTemplate实现机制时我就讲到:JdbcTemplate实现了接口JdbcOperations的所有的数据库操作方法,同时它继承了JdbcAccessor类。JdbcAccessor可以从DataSource中获取相应的属性。所以JdbcTemplate就是从一个DataSource中获取或返回连接。而我们具体的DAO实现类中都有一个JdbcTemplate属性和一个setJdbcTemplate();
所以,我们要想DAO获取数据库连接,就必须事先声明一个数据源。
2、数据源声明
注:这里使用Jakarta的DBCP开源数据库实现方案定义一个数据源。并设置了数据库连接的相关属性。
3、接下来,我们需要配置所使用的JDBC模板类并设置模板类所使用的数据源
?
?
注:其中的<ref bean="dataSource"/> 中的dataSource即前面定义的数据源Bean ID。
4、为DAO分配模板类:将模板类传入DAO实现类的setJdbcTemplate()
?为每一个DAO都要配置一个关联的JdbcTemplate Bean。
注:其中的ref="jdbcTemplate"中的jdbcTemplate为JDBC模板类配置中的Bean ID。
5、当然,可以将这些配置全部放在一个Spring配置文件中。Spring配置文件的基本结构如下:
?
?前面的数据源配置、JDBC模板类配置、DAO配置分别对应于Spring配置文件中的一个bean标记。
?