作者:江南白衣???
??? SpringSide--Pragmatic Enterprise Application KickStart and Common Library Stack,這么長的一個名字下來,不用解釋大家都知道是做什么的了----以Spring Framework為core,提供一個Pragmatic的企業應用開發基礎和最佳實踐展示。
? ?定位:為使用Spring框架的開發者提供一個非Demo版的復雜、正式而體現最佳使用實踐的參照系統。
?? 目標:囊括JavaEE必須面-對的所有問題的合理的、合乎實踐標準的解決方案,采用Plugins形式組織,使開發者可快速定位所需的參考方案并做加法到自己的系統。
?
????項目網站:http://www.springside.org.cn?
??? or http://springside.sourceforge.net
??
??? 1. Featrue List???
- Spring 2 - J2EE Framework.
- Hibernate 3 - ORM, support EJB3/JPA1.0 in future.
- Spring MVC?/WebWork - Multi-Action Web framework.
- JSP2.0 - View Template.
- XFire - Web Service.
- Acegi - Security, RBAC ana ACL.(doing)
- Eclipse BIRT 2 - Report Engine.(doing)
- Drools?3 - Business Rule engine.(doing)
- ActiveMQ ,Jencks - JMS Message Driven POJO.
- Quartz - Enterprise job scheduler.
- DWR 2 , Prototype.js , TrimPath JSTemplate ? - Ajax
- Compass - Search engine use Luecene .(doing)
- Groovy - Dynamic script language.(doing)
- Openi - BI web application for OLAP Report.(doing)
- ServiceMix - ESB(Enterprise Service Bus) and JBI.(doing)
- Commons Validator - client and server side validation.
- SiteMesh web-page layout and decoration framework.
- OSCache - Web cache solution.
- ExtremeTable - JSP Tag Libraries.
- Log4j - Logging tool.
- Ant , Maven2 , JUnit, EasyMock?- Build and Test tools.
- UTF-8 and I18N.
- Intergrate with Weblogic , Tomcat , JBoss , Geronimo.
- And we are choising the Workflow solution.
?
??? 2. SpringSide與Appfuse有什么不同?
??? 1.SpringSide較完整的演示了企業應用的各個主題,而Appfuse只有簡單的登陸界面和用戶管理。
??? 2.SpringSide是深受Ruby on Rails影響的Pragmatic型的方案。
??? 3.Appfuse主要目的是展示各式mvc、orm方案與Spring的結合,有些技術屬于高手玩具,而SpringSide展示的是一個國內項目的實際形態,并帶中文手冊與大量中文代碼注釋
????4. 腳本細節
??SpringSide的基本結構是JDK1.4 + Spring 2.0 + hibernate3 + Spring MVC multi-action + JSP2.0。
??? 使用 XFire提供WebService訂書的服務端接口和 Java版/.Net版的客戶端示范代碼。
????店員是個兼職的學生,所以系統會為每張訂單發一封通知郵件給店員。為了不影響顧客下單的速度,發信的動作由jms異步進行。
???
??? 系統還會用 Quartz定時掃描缺貨的圖書,用郵件通知店員。
????
??? 老板只負責看一些色彩豐富,帶圖的報表。Eclipse Birt2.0提供日常報表 , Openi提供BI OLAP的。
????基于Lucene的 Compass做的圖書全文搜索。
??? 基于 Drools規則引擎的訂單滿100元免運費,會員積分制等。??????
? ? 店面演示Ajax效果與 OSCache的Web Cache,SiteMesh的渲染效果使用。
??? 一些非關鍵業務,用 Groovy動態語言來快速開發。
??? log4j系統將重要操作員日志異步寫入數據庫,使它們可管理。
??? 綜合的Acegi i安全權限管理。
??? utf-8, i18n的國際化項目。
???ServiceMix ,WorkFlow的故事設計中。
??? 5. RoadMap
??? Road Map in? JIRA Issue Checker ,歡迎大家提出更多Topic
????.
??? 6. 團隊成員列表 (排名按加入順序)
???
???? 歡迎朋友們加入。人多速度快是很重要的事情。
???參加方式有3種
?? 1.幫忙codereview提意見
?? 2.到JIRA里面領任務
?? 3.到JIRA 提出新任務?
??真正貢獻了力量的同志自然會成為開發人員.
???
????Team Worker:
???? 江南白衣,cac,@_@,wuyu,charlse, efa,yimlin??
???? Contributor:
???? water?ye ,totodo,david.turing,pesome,oofrank
??
???? 長老供奉:
????? 莊表偉,Robbin
???? (排名按加入時間)
7. 交流區
開發者QQ群:15690287 (only for Springside developer)
用戶QQ群: 21601442
白衣大佬終于出手了
可惜水平有限,如果將來有些文檔之類的咚咚應該可以幫手做下
是否考慮在sf或者java.net上開個專門店?
“SpringSide是深受Ruby on Rails影響的極度Promatic方案。”這個很吸引人吶
有沒有考慮過Osgi +extesion point提供eclipse plugin的擴展機制啊?
我的mail:losingfox@gmail.com
不晚阿,springside才剛啟動。
你不貢獻點代碼類庫之類的出來就不給你看!!!
當然我是理解區別di,嘿嘿
Programer援助交際ID: 不刮胡子的魚。
第一版我想先一些平時比較熟悉的朋友做出一個框架。
再share出來給大家一起添加功能。
希望能有機會參與!有進展一定要發布呀!!!
希望能夠奉獻上俺的一點微薄之力,發揚我們的團隊精神!
想打打下手(讀代碼挑毛病之類的活),不知道有沒有資格。
能早日看到正式版的發布!
agile.guo@gmail.com
說實話,確實想和大家一起合作。
email :angle4781@163.com
申請參加,哈哈:)
stillanother@gmail.com
julian_zzx@hotmail.com
julian0zzx@gmail.com
http://juleven.blogdriver.com
http://www.opentown.info
很久沒更新 :(
simbasun@gmail.com
----------------------------------------------
ultranms@gmail.com
ligangdu@hotmail.com
聯系email: tony@exchange.ricsson.com
聯系email:xsuyu@hotmail.com
有幾點建議,呵呵
BaseHibernateDao的功能可以再強化一些,
如增加對MAP的查找,應對大批量重復在DAO中取MAP去查詢,
增加HQL查找,以便功能急劇變更,特別復雜的情況下使用。
對Controller中生成POJO能否用COPY,直接SET出錯幾率有些大。且煩瑣
刪除能否直接用一個Controller,提高重用?
能否面向接口??
謝謝你的建議:
>>BaseHibernateDao的功能可以再強化一些
BaseDao會隨著應用不斷深入而加強.
你看現在的代碼都是很簡單的,所以也不預先把一堆用不著的功能寫出來了,現在的hibernate,spring變化太快,很容易白寫.
>>如增加對MAP的查找,應對大批量重復在DAO中取MAP去查詢
如果要求Map里所有條件 都是 ==的判斷意義不大, 必須有第3元 邏輯符才有用
>>增加HQL查找,以便功能急劇變更,特別復雜的情況下使用.
同第一點
>>對Controller中生成POJO能否用COPY,直接SET出錯幾率有些大。且煩瑣
不懂,舉個例子好嗎?
>>刪除能否直接用一個Controller,提高重用?
會不會不好管理?
歡迎你在User-group里面提出review意見
http://groups.google.com/group/springside-user
我的意思是針對DAO的方法能否粗粒度一點,比如抽象出 增 、刪 、 改 、 查的基本操作。
下面是一些思路。
接口
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
public interface DAOInterface {
public void saveObject(Object obj);
public List loadAllObject();
public void updateObject(Object obj);
public void saveOrUpdateObject(Object obj);
public void deleteObject(Object obj);
public void deleteAllObject(Collection obj);
public Object loadObject(Serializable id);
}
下面是base
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
public abstract class BaseDAO extends HibernateDaoSupport{
protected abstract Class getPojoClass();
public void saveObject(Object obj) {
super.getHibernateTemplate().save(obj);
}
public List loadAllObject() {
return super.getHibernateTemplate().loadAll(this.getPojoClass());
}
public void updateObject(Object obj) {
super.getHibernateTemplate().update(obj);
}
public void saveOrUpdateObject(Object obj){
super.getHibernateTemplate().saveOrUpdate(obj);
}
public void deleteObject(Object obj) {
super.getHibernateTemplate().delete(obj);
}
public void deleteAllObject(Collection obj) {
super.getHibernateTemplate().deleteAll(obj);
}
public Object loadObject(Serializable id) {
return super.getHibernateTemplate().load(getPojoClass(),id);
}
//直接hql查找
public List find(String hqlString) {
return this.getHibernateTemplate().find(hqlString);
}
public List findObject(String queryString, Object[] values) {
return this.getHibernateTemplate().find(hqlString, values);
}
}
BookDAO
public interface BookDAOextends DAOInterface {
//extends method
}
BookDAOImpl
public class BookDAOImpl extends BaseDAO implements BookDAO{
private Class pojoClass = Book.class;
protected Class getPojoClass() {
return pojoClass;
}
public void setPojoClass(String className){
try {
pojoClass = Class.forName(className);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//extends method
}
org.apache.commons.beanutils.PropertyUtils.PropertyUtils.copyProperties(form,POJO);
修改時
org.apache.commons.beanutils.PropertyUtils.PropertyUtils.copyProperties(POJO,form);
刪除能否直接用一個Controller,提高重用?
是指把重復寫
public ModelAndView removeAll(HttpServletRequest request, HttpServletResponse response) throws Exception
{
String[] ids = request.getParameterValues("itemlist");
if (ids != null)
{
for (int i = 0; i < ids.length; i++)
{
bookManager.removeBook(new Integer(ids[i]));
}
saveMessage(request, "成功刪除" + ids.length + "條紀錄");
}
return new ModelAndView(SUCCESS_VIEW);
}
這種remove代碼提取出來,因為沒有業務邏輯,最多是不能刪除,不過那是l列表頁面的邏輯,構造為一個Controller。不過也有缺點,需要在頁面指定Controller調用哪個service,指定返回頁面。
對MAP的查找,可以把邏輯運算符放到map中,
PairValue pv = nw PairPairValue (obj,logic);
map.put(attr1,pv);
如果需要指定是and 還是 or ..可以構造三元值放到MAP中。
另外對于Map查找,有個功能是不能實現的,比如book.price > 12 and book.price <18..
基于以下框架開發:webwork,spring,hibernate,sitemesh,freemarker,displaytag,osflow
email:surootcsdn@gmail.com
ROR中Controller的內置對象session, logger(那個BaseManager的logger不知道是什么思路), params等非常方便,在SpringSide中可以在BaseController中以protected method方式加進去,能夠大大方便編程,盡量不要用protected field方式。
bookstore-servlet.xml中的urlMapping可以模仿ROR中的mapping方式,去除從URL到Controller的xml配置。比如book.do直接映射到org.springside.bookstore.BookController。其中package名字配置一次就夠了。
bookstore的實例代碼中的domain object似乎有一些貧血,ROR中就沒有DAO和Service層,Data Access代碼就在domain object里面。
BTW,我用Eclipse 的WTP來跑的,這套插件竟然占了我的筆記本300M內存!有種欲哭無淚的感覺,什么時候Emacs有一個打包的J2EE開發環境我一定叛變過去。
Email:aystnd@163.com
有什么需要可以幫忙打下手。
wjw_319@hotmail.com
kenny319@hotmail.com
強烈支持!!
我現在正在做一個OpenSource項目——一個基于Eclipse的開源框架整合的軟件生命周期管理的項目,
精力不足啊,否則,一定鼎立幫忙!哈哈
降低項目開發的周期,加快項目開發,對框架進行整合,已經是大趨勢了,開源項目來的太快,太多,讓那些巨頭都有點招架不了了,在這個時期,開源快速切入應該是最好的時機,現在好像缺的東西還是很多的:項目管理(整合度高的,智能化的),架構整合(uml,er圖,代碼與現有framework之間的整合,多一點智能化),。。。。
高層次的,如項目測試等,還被巨頭壟斷,開源也很少啊
我會抽盡量多的時間關注項目!哈哈
恰巧我也準備籌建一個符合大眾口味的開源框架,我想SpringSide在我這
會有更好的實踐和考驗機會;
真誠申請加入開發團隊:
patterns@eyou.com
patternsone@eyou.com
msn:patternsone@hotmail.com
xinzhuhuang@hotmail.com
hibernate3@gmail.com
msn:mamba_channel3@hotmail.com
hopenful@yahoo.com
wzhj2005@hotmail.com
祝項目越做越好!!!
SpringSide的開發中,我覺得最好由樓主主導,不必參考太多的意見,因為每個程序員都有自己的開發習慣,沒有絕對最佳的方案。盡快出東西,期待SpringSide中....
It would be great if the documentation is available in english too. I really liked the application and the valuble code.
Hope we will get english documentation.
Thanks & Regards
Ramesh Mandaleeka
msn : zuodelong@hotmail.com
等于
沒有解決任何問題。
msn:gigiluopeng@hotmail.com