一、数据访问
1、Spring的数据访问设计思想(DAO、模板方法)PPT77
2、数据源配置:
方式一:Spring内置实现 DriverManagerDataSource
<bean id ="dataSource" class ="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/hibdb</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>windows</value>
</property>
</bean>
方式二:DBCP提供的BasicDataSource
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/hibdb</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>windows</value>
</property>
</bean>
方式三:JNDI数据源 (在讲解SSH整合时再说明)
JNDI数据源:(mysql5,tomcat5.5)
step1:
在server.xml中:
<Resource name="jdbc/mydatasource" auth="Container" description="DB Connection"
type="javax.sql.DataSource" username="root" password="windows"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/tarena" maxActive="5" />
step2:
在context.xml中(conf\context.xml):
<ResourceLink name="jdbc/mydatasource" global="jdbc/mydatasource" type="javax.sql.DataSourcer"/>
step3:
在beans-config.xml:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/mydatasource</value>
</property>
</bean>
3、JDBC支持:
step1: 配置数据源
step2: 配置JdbcTemplate
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
step3:配置DAO
<bean id="orderDao" class="lab5.OrderDAOImpl">
<property name="jt"><ref bean="jdbcTemplate"/></property>
</bean>
注意: 查询时,使用RowMapper
4、hibernate支持:
step1: 配置数据源
step2: 配置sessionfactory
<bean id="mySessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>lab6/Order.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
注意:配置映射文件位置的另一种用法
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/bo</value>
</list>
</property>
step3: 配置DAO
<bean id="orderDao" class="lab6.OrderDAOHibernateImpl">
<property name="sessionFactory">
<ref bean="mySessionFactory" />
</property>
</bean>
注意:以上配置是要求dao 继承HibernateDaoSupport
二、事务:
1、Spring事务机制
声明式事务、事务管理器
2、hibernate事务p72
step1: 配置数据源
step2:配置sessionfactory (同上)
step3:配置事务管理器
<bean id="myTransactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="mySessionFactory" />
</property>
</bean>
step4:创建事务服务代理
<bean id="saleService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="proxyInterfaces">
<value>lab7.SaleService</value>
</property>
<property name="transactionManager">
<ref bean="myTransactionManager" />
</property>
<property name="target">
<ref bean="saleServiceTarget" />
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
注:
事务属性描述格式:
传播行为,隔离级别,只读事务(readonly),回滚规则
在默认情况下,Spring的容器对于非受查异常(服务模块中抛出的非受查异常)
,会回滚事务。对于受查异常,会提交事务。
如果即使发生了某种受查异常,也要回滚事务,可以用 “- 异常类型“来声明。
同样,对于非受查异常,如果不要求回滚事务,可以用"+异常类型"来声明
3、简化事务配置
继承、自动代理
4、使用标注来进行事务管理(可选)
(1)引入相应命名空间,参见spring参考文档
(2)加入<tx:annotation-driven transaction-manager="myTransactionManager"/>
(3)在service类中,使用@Transactional标记
可参考工程spring中的t4
三、Spring与struts整合:
前提:
必须在Web应用启动时,创建Spring的ApplicationContext实例
方式:
1、采用ContextLoaderListener来创建ApplicationContext:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-config/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
2、采用ContextLoaderPlugIn来创建ApplicationContext
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/config/sale.xml" />
</plug-in>
或者:
通过listener装载spring应用上下文
方式一:通过Spring的ActionSupport类
ActionSupport类:
知道ApplicationContext的获得方式。
步骤:
1、Action直接继承ActionSupport
2、使用ApplicationContext ctx = getWebApplicationContext();取得Spring上下文
3、取得相应Bean
注意:有可能需要替换commons-attributes-compiler.jar包。
优点:
简单
缺点:
耦合高
违反IOC
无法使用多方法的Action
方式二:通过Spring的DelegatingActionProxy类
步骤:
1、Action中,使用IOC获得服务
2、配置struts-config.xml
<action path="/somepath" type="org.springframework.web.struts.DelegatingActionProxy"/>
3、在Spring配置文件中
<bean name="/somepath" class="SomeAction">
<property name="service"><ref bean=""/>
</bean>
注意,要用bean name命名。
/somepath:Action的path
优点:
不使用Spring api编写 Action
利用了IOC装配。
可以利用容器的scope="prototype"来保证每一个请求有一个单独的Action来处理,
避免struts中Action的线程安全问题。
缺点:
struts配置文件中,所有path都映射到同一个代理类
方式三:通过Spring的DelegatingRequestProcessor类
步骤:
1、Action中,使用IOC获得服务
2、配置struts-config.xml
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />
3、在Spring配置文件中
<bean name="/somepath" class="SomeAction">
<property name="service"><ref bean=""/>
</bean>
小结:
Spring与Struts整合方式只有两种:
(1)由Spring容器来管理Action(方式二,方式三)
(2)Action处于容器之外(方式一)
注意:
中文问题:
设置过滤器,设置页面编码,数据库编码
没有合适的资源?快使用搜索试试~ 我知道了~
spring源码学习
共267个文件
java:139个
xml:48个
class:25个
需积分: 3 211 下载量 24 浏览量
2008-08-20
10:53:36
上传
评论 1
收藏 271KB ZIP 举报
温馨提示
spring源码学习
资源推荐
资源详情
资源评论
收起资源包目录
spring源码学习 (267个子文件)
CustomerAction.class 2KB
CustomerAction.class 2KB
CustomerDAOHibernateImpl.class 2KB
CustomerDAOHibernateImpl.class 2KB
MyHandler.class 1KB
Test.class 1KB
Test.class 1KB
CustomerForm.class 1KB
CustomerForm.class 1KB
CustomerServiceSpringImpl.class 1KB
CustomerServiceSpringImpl.class 1KB
CustomerDAOHibernateImpl$1.class 1KB
CustomerDAOHibernateImpl$1.class 1KB
Customer.class 975B
Customer.class 975B
HibernateDao.class 608B
JdbcDao.class 600B
Logic.class 594B
Factory.class 555B
Test.class 452B
CustomerService.class 351B
CustomerService.class 351B
CustomerDAO.class 322B
CustomerDAO.class 322B
Dao.class 138B
.classpath 1KB
.classpath 1KB
.classpath 470B
.classpath 470B
.classpath 387B
.classpath 310B
.classpath 310B
Bean生命周期.doc 109KB
commons-attributes-compiler.jar 29KB
MyHandler.java 2KB
CustomerAction.java 2KB
CustomerForm.java 1KB
CustomerForm.java 1KB
CustomerDAOHibernateImpl.java 1KB
CustomerDAOHibernateImpl.java 1KB
CustomerDAOHibernateImpl.java 1KB
CustomerAction.java 1KB
StockProcessSpringImpl2.java 1KB
Test.java 1KB
SomeBean.java 1KB
StockProcessSpringImpl.java 1KB
CustomerDAOJdbcImpl.java 1KB
CustomerServiceSpringImpl.java 994B
ToUpperCaseBean.java 972B
CustomerServiceSpringImpl.java 878B
CustomerServiceSpringImpl.java 878B
CustomerServiceSpringImpl.java 878B
PointcutUnionUtil.java 769B
Test.java 753B
SomeIntroductionInterceptor.java 745B
Test.java 730B
MonitorTimeInterceptor.java 718B
Test.java 714B
Test.java 714B
Test.java 714B
Test.java 713B
MyPointcutAdvisor.java 702B
MyPointcutAdvisor.java 702B
Test.java 664B
Address.java 607B
RegisterService.java 604B
LogInvocationHandler.java 597B
LogInvocationHandler.java 571B
AccountDAOHibernateImpl.java 569B
Test.java 568B
MyMethodMatcher.java 562B
MyMethodMatcher.java 562B
StockDAOHibernateImpl.java 553B
Test.java 538B
Test.java 537B
MyMethodMatcher2.java 526B
Test.java 525B
CustomerRowMapper.java 517B
Test.java 515B
Test.java 506B
Test.java 503B
CountBean.java 503B
Test.java 502B
Account.java 501B
Test.java 498B
Test.java 494B
ConnCountCompareInterceptor.java 493B
ReportServiceProxyImpl.java 482B
Test.java 478B
Test.java 472B
Stock.java 471B
Test.java 469B
Test.java 466B
Test.java 466B
Test.java 466B
Customer.java 465B
Customer.java 465B
Customer.java 465B
Customer.java 465B
Test.java 463B
共 267 条
- 1
- 2
- 3
资源评论
stevenrui
- 粉丝: 1
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 变压器变比组别测试仪参数
- yes I can.mp3
- 水果商城前端项目(HTML+CSS)
- 解忧云SMS短信服务平台系统 短信发送系统 全解密完美版.zip
- 天迹云通信短信分销系统源码.rar
- Screenshot_20240515_190514_net.csdn.csdnplus.jpg
- Win11右键设置小工具(最新版)
- FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写
- MNIST手写数字数据集(原始数据+解析后7000张图片)
- cudart64-100.dll cudart64-101.dll cudart64-110.dll cusolver64-10
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功