10.3.3 部署DAO组件
对于所有继承BaseDaoHibernate4
的DAO
实现类必须为其提供SessionFactory
的引用,Spring
的IoC
容器可以将SessionFactory
注入到DAO
组件中。
下面是在本系统中部署DAO
组件的配置代码,本系统以单独配置文件来部署DAO
组件,这样可以将不同组件放在不同配置文件中分开管理,从而避免Spring
配置文件过于庞大。下面是部署DAO
组件的配置文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| <?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" p:driverClass="com.mysql.jdbc.Driver" p:jdbcUrl="jdbc:mysql://localhost:3306/auction" p:user="root" p:password="root" p:maxPoolSize="200" p:minPoolSize="2" p:initialPoolSize="2" p:maxIdleTime="2000" destroy-method="close"/>
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" p:dataSource-ref="dataSource"> <property name="annotatedClasses"> <list> <value>org.crazyit.auction.domain.AuctionUser</value> <value>org.crazyit.auction.domain.Bid</value> <value>org.crazyit.auction.domain.Item</value> <value>org.crazyit.auction.domain.Kind</value> <value>org.crazyit.auction.domain.State</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQL5InnoDBDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> </bean>
<bean id="daoTemplate" abstract="true" p:sessionFactory-ref="sessionFactory" /> <bean id="stateDao" parent="daoTemplate" class="org.crazyit.auction.dao.impl.StateDaoHibernate" /> <bean id="kindDao" parent="daoTemplate" class="org.crazyit.auction.dao.impl.KindDaoHibernate" /> <bean id="auctionUserDao" parent="daoTemplate" class="org.crazyit.auction.dao.impl.AuctionUserDaoHibernate" /> <bean id="bidDao" parent="daoTemplate" class="org.crazyit.auction.dao.impl.BidDaoHibernate" /> <bean id="itemDao" parent="daoTemplate" class="org.crazyit.auction.dao.impl.ItemDaoHibernate" /> </beans>
|
这里在粗体字代码中配置了一个daoTemplate
抽象Bean
,它将作为系统中其他DAO
组件的模板,这样就可将daoTemplate
的配置属性传递给其他DAO Bean
。
为了让其他DAO
组件获得daoTemplate
的配置属性,必须将其他DAO
组件配置成daoTemplate
的子Bean
,子Bean
通过parent
属性指定其父Bean
,正如在上面的配置文件中,在每个DAO Bean
的粗体字代码中都指定了parent="daoTemplate"
,这表明这些DAO
组件将以daoTemplate
作为模板。