service 服务居必须使用面向接口的方式编程
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- spring+hibernate 基本配置 -->
<bean id="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:spring.properties</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="hibernateProperties">
<props>
<prop key="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
<prop key="hibernate.proxool.xml">proxool.xml</prop>
<prop key="hibernate.proxool.pool_alias">xhibernate</prop>
<prop key="hibernate.jdbc.batch_size">25</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.connection.release_mode">after_transaction</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/easylotto/lottobar/domain/Demo.hbm.xml</value>
</list>
</property>
</bean>
<!-- spring 事务配置 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="baseTransactionProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>
</bean>
<!-- 系统常常 -->
<bean id="commandHandler" class="java.lang.String">
<constructor-arg value="com.easylotto.lottobar.framework.BarServerCommandHandler"/>
</bean>
<bean id="clientData" class="java.lang.String">
<constructor-arg value="com.easylotto.lottobar.bean.SocketClientLoginInfoEntity"/>
</bean>
<bean id="serverPort" class="java.lang.String">
<constructor-arg value="4100"/>
</bean>
<bean id="serverName" class="java.lang.String">
<constructor-arg value="17lottoBarServer"/>
</bean>
<!-- VO PO 的父类 -->
<bean id="baseEntity" class="com.easylotto.lottobar.bean.BaseEntity" abstract="true" />
<!-- 命令VO -->
<bean id="reqCommandVO" class="com.easylotto.lottobar.bean.ReqCommandVO" parent="baseEntity"/>
<!-- 测试例子 -->
<bean id="demoService" parent="baseTransactionProxy">
<property name="target">
<bean class="com.easylotto.lottobar.barserver.service.DemoService"
autowire="byName" />
</property>
</bean>
<!-- 命令解析 -->
<bean id="commandParse" class="com.easylotto.lottobar.framework.CommandParse" />
<!-- 命令融器 -->
<bean id="commandContainer" class="com.easylotto.lottobar.framework.CommandContainer" >
<property name="commandMap">
<map>
<entry key="test" value-ref="demoService" />
</map>
</property>
</bean>
<!-- 服务运行 -->
<bean id="barServer" class="com.easylotto.lottobar.framework.BarServer">
<property name="commandHandler">
<ref bean="commandHandler"/>
</property>
<property name="clientData">
<ref bean="clientData"/>
</property>
<property name="serverPort">
<ref bean="serverPort"/>
</property>
<property name="serverName">
<ref bean="serverName"/>
</property>
</bean>
<bean id="demoDAO" class="com.easylotto.lottobar.dao.DemoDAO" >
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
</beans>
如果采用spring声明式管理后,直接调用DAO的方式并能不保存数据
DemoDAO demoDAO=(DemoDAO)cpac.getBean("demoDAO");
Demo d=new Demo();
d.setName("小pei");
d.setAge(558);
demoDAO.save(d);
这是为什么??同事说加上
<bean id="userInfoDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="userInfoDAOImpl" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
DAO也采用代理的方式就可以不跟过Service层直接能操作DB,我想应该是这样,但没试用
通过spring 的ApplicationContext获取服务实例时只能使用接口如
IService ds =(IService)cpac.getBean("demoService");
而不是能是对象!!!
乱,仅做个人笔记
posted on 2008-02-29 16:26
有猫相伴的日子 阅读(678)
评论(0) 编辑 收藏 所属分类:
ibatis/hibernate/持久层技术