<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value ="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url" value="jdbc:oracle:thin:@192.168.1.123:1521:orcl">
</property>
<property name="username" value ="sam"> </property>
<property name="password" value ="1234"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" value="dataSource">
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect"> org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="GuestbookDao"
class="com.xino.Guestbook.dao.hibernate.GuestBookDaoHibernate">
<property name="sessionFactory">
<ref bean="sessionFactory" /> </property>
</bean> <bean id="guestbookManager"
class="com.xino.Guestbook.service.impl.GuestbookManagerimpl">
<property name="GuestbookDao">
<ref bean="GuestbookDao" /> </property>
</bean></beans>
上面不明白的是,为什么我的GuestbookDao接口bean和其实现类,要设置其属性为sessionFactory?
还有就是我的另一个调用GuestbookDao的服务层接口,为什么也要设置其属性为GuestbookDao?
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value ="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url" value="jdbc:oracle:thin:@192.168.1.123:1521:orcl">
</property>
<property name="username" value ="sam"> </property>
<property name="password" value ="1234"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" value="dataSource">
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect"> org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="GuestbookDao"
class="com.xino.Guestbook.dao.hibernate.GuestBookDaoHibernate">
<property name="sessionFactory">
<ref bean="sessionFactory" /> </property>
</bean> <bean id="guestbookManager"
class="com.xino.Guestbook.service.impl.GuestbookManagerimpl">
<property name="GuestbookDao">
<ref bean="GuestbookDao" /> </property>
</bean></beans>
上面不明白的是,为什么我的GuestbookDao接口bean和其实现类,要设置其属性为sessionFactory?
还有就是我的另一个调用GuestbookDao的服务层接口,为什么也要设置其属性为GuestbookDao?
<property name="GuestbookDao">
<ref bean="GuestbookDao" />
</property>
</bean> 依赖注入嘛~~看这个<property name="GuestbookDao"> 这个参数的对象是你在GuestbookManagerimpl里面的Dao接口里定义的一个对象,但是这个对象你在做的时候没有实例化,也就是说没有new出来~~但是如何运行呢?<ref bean="GuestbookDao" /> 这个就是把这个对象的实例传给他~~<bean id="guestbookManager" 这个以后就是这个dao接口的实例了。要用这个实例的时候。只要在spring里把这个名字方进入。框架会自动帮你完成实例化的~~一般依赖注入都采用面向接口的方式,这样非常灵活~~