Posted on 2006-08-27 16:38
Earth 阅读(3519)
评论(0) 编辑 收藏 所属分类:
Java
这是对上一个示例的升级。
基本上不用改任何代码。只说不一样的地方。
不同:
1.
使用
IoC
:本例为
Type3 (Constructor Injection),
方法:
先用
Eclipse
的
Generate Construtor Using Fields
功能
,
快速生成构造函数
,
再使用
Spring
的
IoC
,将以前代码中写死的依赖关系以配置的方式注入
2
.使用
org.springframework.orm.ibatis.SqlMapClientTemplate
所有的
dao
类都继承这个方法,它只是对
iBATIS-DAO
做了简单的封装,将
CRUD
方法中抛出的
SQLException
变成了
unchecked exception.
3
.
SqlMapConfig.xml
同前一个例子,只是将
DB
的部分去掉。
4
.
Spring
与
Struts
的集成,
struts-config.xml
中所有
action
的
type
都要变成
org.springframework.web.struts.DelegatingActionProxy
然后是增加
spring
插件
<plug-in
className=
"org.springframework.web.struts.ContextLoaderPlugIn"
>
<set-property
property=
"contextConfigLocation"
value=
"/WEB-INF/classes/spring.xml"
/>
</plug-in>
这便是
Struts
和
Spring
的集成方法
J
5
.
Spring
的配置文件
(
名称,位置任意
)
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
3 "http://www.springframework.org/dtd/spring-beans.dtd">
4 <beans>
5 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
6 <property name="location" value="classpath:jdbc.properties"/>
7 </bean>
8
9 <bean name="/employee" class="ibatis.demo.action.EmployeeAction">
10 <constructor-arg index="0" ref="employeeService"/>
11 <constructor-arg index="1" ref="departmentService"/>
12 </bean>
13
14 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
15 <property name="driverClassName" value="${driver}"/>
16 <property name="url" value="${jdbcURL}"/>
17 <property name="username" value="${username}"/>
18 <property name="password" value="${password}"/>
19 </bean>
20
21 <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
22 <property name="configLocation"> <value>classpath:ibatis/demo/dao/SqlMapConfig.xml</value>
23 </property>
24 <property name="useTransactionAwareDataSource">
25 <value>true</value>
26 </property>
27 <property name="dataSource">
28 <ref bean="dataSource"/>
29 </property>
30 </bean>
31
32 <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
33 <property name="sqlMapClient">
34 <ref bean="sqlMapClient"/>
35 </property>
36 </bean>
37
38 <bean id="employeeDao" class="ibatis.demo.dao.EmployeeDaoIbatis">
39 <property name="sqlMapClient">
40 <ref bean="sqlMapClient"/>
41 </property>
42 </bean>
43
44 <bean id="employeeService" class="ibatis.demo.service.EmployeeServiceImpl">
45 <constructor-arg index="0" ref="employeeDao"/>
46 </bean>
47
48 <bean id="departmentDao" class="ibatis.demo.dao.DepartmentDaoIbatis">
49 <property name="sqlMapClient">
50 <ref bean="sqlMapClient"/>
51 </property>
52 </bean>
53
54 <bean id="departmentService" class="ibatis.demo.service.DepartmentServiceImpl">
55 <constructor-arg index="0" ref="departmentDao"/>
56 </bean>
57
58 </beans>
59
特别注意的是:
struts-config.xml-> action ->path
属性
一定要和
spring.xml->bean ->name
属性一模一样
在项目中引入
spring
,就以上
5
个步骤。一半的工作在于
spring.xml
的编写。
其它:
把一个已有的工程引入到
Eclipse
下的方式,首先把已有的项目复制到你的
workspace
下,然后新建一个同名的
java
工程,
方法是
File -> New Project -> Java Project ->
输入工程名
(
用相同的名字
)
。
The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from required .class files.
这个错误表示的意思还不太清楚,而且奇怪的是该错误提示总是在代码的最前面
(
第一行位置
)
,解决办法是加入相关类的
jar
包到你的
classpath
因此此处加入
servelet-api.jar
到
classpath
,
OK
。