1、首先要在web.xml中添加:
contextConfigLocation classpath:spring-*.xml struts2 org.apache.struts2.dispatcher.FilterDispatcher hibernateFilter org.springframework.orm.hibernate3.support.OpenSessionInViewFilter struts2 /* hibernateFilter /* org.springframework.web.context.ContextLoaderListener
添加spring的ContextLoaderListener,还有OpenSessionInViewFilter到web.xml中。
2、在struts.xml中添加:
添加一个constant,声明struts2使用的objectFactory是spring,不过好象struts2默认已经是使用spring作为objectFactory了,不加这一行也是可以的。不过我看在struts2-core-2.0.11.jar中的default.properties中的struts.objectFactory = spring是用#注释掉的,很奇怪??? 所以我就把它加到struts.xml中了。
3、就是添加spring的配置文件了
spring-datasource.xml的代码:
我用的是mysql,可以替换成其他database的连接。
spring-hibernate.xml的代码:
org.hibernate.dialect.MySQLDialect
com.liyanframework.chart.domain.Fruit com.liyanframework.chart.domain.Sales
现在jdk早就支持Annotation了,所以我这里就是使用的hibernate的Annotation,省去了许多麻烦的hbm.xml文件了,同时也把普通的sessionFactory的配置晒出来了。
4、以下是domain object和sql script的相关文件
Sales.java代码:
package com.liyanframework.chart.domain; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="T_SALES") public class Sales implements Serializable { private Long id; private String month; private int amount; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name="SALES_AMOUNT") public int getAmount() { return amount; } public void setAmount(int amount) { this.amount = amount; } @Column(name="SALES_MONTH") public String getMonth() { return month; } public void setMonth(String month) { this.month = month; } }
数据库脚本:
CREATE TABLE IF NOT EXISTS T_SALES ( ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, SALES_MONTH VARCHAR(255) NOT NULL UNIQUE, SALES_AMOUNT INTEGER NOT NULL )ENGINE=INNODB; ALTER TABLE T_SALES AUTO_INCREMENT = 20000;
5、最后就是要把相关的jar放到classpath里就可以了。
需要注意的一点是,一定要到struts2里面把struts2-spring-plugin-2.0.11.jar加进来,在struts2中,spring的引入采用了plugin的方式,不同与之前的webwork2,本人觉得这样更好呀。
除了jar以外的source code晒出来,给大家分享。