????最近在準備一個項目,經過比較最終選JSF1.2 +Spring2.0 +Hibernate3.2的框架,至于為什么我就不說了,每個都有自己的看法。下面進入正題。
????開發工具是MyEclipse5.5 支持JEE5的開發,其實用到JEE5的功能可能很少或者沒有,但即然有還是選擇先進的技術吧。JSF1.2暫時選擇SUN的實現,以后要可以隨時換成MyFaces的(現在MyFaces是1.1.5吧?),Spring是2.0.5版。使用Maven2來管理Jar包和生命周期,用著也是很方便的,比ANT要少寫不少配置的東西。而且有專門的E clipse下的插件。
????開始操作吧。
新建工程
在MyEclipse下新建一個Web工程。注意J2EE服務器選擇J2EE5.0 ,然后點完成。以前的MyEclise新建Web工程很慢,有時會死機,現在好多了。已經好長時間沒用MyEclipse了。
加入JSF
在工程目錄上點右鍵,在菜單中選擇MyEclipse->Add JSF Capabilities…會出現一個窗口,如圖
Faces-config.xml 文件放到/WEB-INF/目錄下,Faces Servlet name 保持不變是 Faces Servlet即可,我將URL pattern 改成了*.jsf ,不改也可以只是要注意后面涉及到訪問JSF的都要用*.faces。
現在JSF就配置好了,主要是web.xml中的一個Servlet和faces-config.xml。
加入Spring
用MyEclipse也能夠象加入JSF一樣加入Spring 的支持,但是我們要用MAVEN2來管理JAR包,所以就不用這種方式加入。在工程點上右鍵,在彈出的菜單中選擇Maven2然后選擇endable。(要求你得先正確安裝Maven2和Eclipse的插件, 插件的更新地址是:http://m2eclipse.codehaus.org/update/,多數是不成功,得找一個正確的Eclipse版本,我也是換了好多個版本)。
在彈出的窗口中輸入要求的信息,主要是packaging 選擇war。
完成后工程根目錄就會新建一個pom.xml 文件。在文件上右鍵,maven2->add dependency 來加入需要的jar包。看下面完整的pom.xml(注意:編輯完pom.xml之后編譯工程就要聯網下載jar包了。)
?
在WEB-INF/目錄下一個名為applicationContext.xml的文件,因為了Spring啟動時會自己在這個目錄下查找這個文件。內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=http://www.springframework.org/schema/beans xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
????????????
</beans>
只是一個沒有任何配置的文件。
JSF結合Spring
Spring 加入后,得讓它能夠和JSF結合起來工作,也就是在JSF中能夠訪問Spring中的bean,只需要在web.xml文件中加入下面一段:
????<listener>
????????<listener-class>
????????????org.springframework.web.context.ContextLoaderListener
????????</listener-class>
????</listener>
這樣就可以訪問Spring 中的bean 了。
????例如:
????????Faces-confg.xml中的一段代碼
????<managed-bean>
????????<managed-bean-name>UserBean</managed-bean-name>
????????<managed-bean-class>
????????????cn.xiangyunsoft.web.jsf.beans.UserBean
????????</managed-bean-class>
????????<managed-bean-scope>session</managed-bean-scope>
????????<managed-property>
????????????<property-name>userDao</property-name>
????????????<value>#{userDao}</value>
????????</managed-property>
????</managed-bean>
????其中#{userDao} 這個就是訪問Spring中的bean .
????applicationContext.xml
????<bean id="userDao"
????????class="cn.xiangyunsoft.busniess.dao.impl.UserDaoImpl">
????????……
????</bean>
????
????加入Hibernate3
在pom.xml文件中加入依賴包。看后面完整的pom.xml
在applicationContext.xml文件加入下面代碼
????<bean id="XYSDataSource"
????????class="org.apache.commons.dbcp.BasicDataSource">
????????<property name="driverClassName"
????????????value="net.sourceforge.jtds.jdbc.Driver">
????????</property>
????????<property name="url"
????????????value="jdbc:jtds:sqlserver://localhost:1433/erpdata">
????????</property>
????????<property name="username" value="sa"></property>
????????<property name="password" value=""></property>
????</bean>
????<bean id="HibernateSessionFactory"
????????class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
????????<property name="dataSource">
????????????<ref bean="XYSDataSource" />
????????</property>
????????<property name="hibernateProperties">
????????????<props>
????????????????<prop key="hibernate.dialect">
????????????????????org.hibernate.dialect.SQLServerDialect
????????????????</prop>
????????????</props>
????????</property>
????</bean>
第一個bean XYSDataSource是設置數據源,也可以把它換成JNDI方式由服務器管理的數據源。
第二個bean HibernateSessionFactory是設置HibernateSession工廠,可以通過Spring bean 來訪問Hibernate session.因為使用annotations方式配置hibernate,所以連hibernate.cfg.xml 都不用了!
完整pom.xml
<?xml version="1.0" encoding="UTF-8"?><project>
<modelVersion>4.0.0</modelVersion>
<groupId>cn.xiangyunsoft</groupId>
<artifactId>XI</artifactId>
<packaging>war</packaging>
<version>0.0.1</version>
<description></description>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-support</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-hibernate3</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jpa</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jca</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.2.1.ga</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
</dependencies>
</project>
好了。所有的配置都完成了。現在他們可以好好的相處了。就差加點代碼讓它們工作了。過兩天會把完整的代碼發上來。
還有,JSF+Spring+hibernate最少需要那些Spring的包還沒試。誰知道可以知會一下。現在差不多是都加上了。