隨筆 - 170  文章 - 536  trackbacks - 0
          <2006年9月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          我參與的團(tuán)隊(duì)

          隨筆分類(103)

          搜索

          •  

          積分與排名

          • 積分 - 415134
          • 排名 - 135

          最新評(píng)論

          閱讀排行榜

          看到 Shale 的 Spring Integration 文檔的介紹原理,其中順序如下:

          When asked to resolve a variable name, the following algorithm is performed:

          1.Does a bean with the specified name already exist in some scope (request, session, application)? If so, return it.

          2.Is there a standard JavaServer Faces managed bean definition for this variable name? If so, invoke it in the usual way, and return the bean that was created.

          3.Is there configuration information for this variable name in the Spring WebApplicationContext for this application? If so, use it to create and configure an instance, and return that instance to the caller.

          4.If there is no managed bean or Spring definition for this variable name, return null instead.

          這樣的話,只要 Spring 可以控制 Bean 的 Scope 的話,就可以把 Managed-Bean 的配置放到 Spring Bean 里來配置,一方面,我們可以省去了 JSF 的 Managed Bean 的配置,另外的話,我們可以對(duì) JSF 的 Backing Bean 使用 AOP 以及 Spring 提供的很多功能。過去在 JSF-Spring 中嘗試著去控制 Spring Bean 的 Scope,但是做的并不好,現(xiàn)在 Spring 2.0 給我們提供了這樣的能力,經(jīng)過實(shí)驗(yàn),證明了這樣是可行的。

          不過如果使用 Spring Bean 以后,會(huì)造成使用 Managed Bean 的 JSTL 無(wú)法使用,其實(shí) JSTL 本身用起來就時(shí)好時(shí)壞的,所以影響并不太大了。

          整合起來步驟非常的簡(jiǎn)單:

          1. 把 Spring 2.0 的 jar 文件放到 lib 下面,當(dāng)前使用的是 Spring 2.0 RC3

          2. 因?yàn)槭褂玫氖?Servlet 2.4,所以要在 web.xml 中加入
          ??? <listener>
          ??????? <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
          ??? </listener>

          3. 修改 applicationContext.xml

          注釋或刪掉以下內(nèi)容:

          ? <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
          ? "
          http://www.springframework.org/dtd/spring-beans.dtd ">

          修改 <beans> 為:

          ? <beans xmlns=" http://www.springframework.org/schema/beans "
          ?????? xmlns:xsi="
          http://www.w3.org/2001/XMLSchema-instance "
          ?????? xmlns:aop="
          http://www.springframework.org/schema/aop "
          ?????? xsi:schemaLocation="
          ?
          http://www.springframework.org/schema/beans ? http://www.springframework.org/schema/beans/spring-beans.xsd
          ? http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd ">

          4. 然后就可以按照配置 Spring Bean 的方式來配置 Managed Bean:

          ??? 這個(gè)是 Request Scope 中的 Bean:
          ??? <bean id="loginBean" class="org.agilejava.icustomer.backingbean.LoginBean"
          ????????? scope="request" autowire="byName">
          ??????? <aop:scoped-proxy/>
          ??? </bean>

          ??? 這個(gè)是 Session Scope 中的 Bean:
          ??? <bean id="menuBean" class="org.agilejava.framework.commons.menu.MenuBackingBean"
          ????????? scope="session" autowire="byName">
          ??????? <aop:scoped-proxy/>
          ??? </bean>

          雖然短期來看,配置上會(huì)少寫了一些,因?yàn)?autowire="byName",但是從長(zhǎng)遠(yuǎn)來看,我們可以利用 Spring 的更多功能,比如 AOP 來增強(qiáng) Backing Bean 的能力,我的第一個(gè)設(shè)想就是用 AOP 來處理 Backing Bean 中的異常,今后幾天我會(huì)繼續(xù)做這方面的實(shí)踐了。

          posted on 2006-09-05 10:16 steady 閱讀(3590) 評(píng)論(2)  編輯  收藏 所屬分類: JSF & Myfaces

          FeedBack:
          # re: JSF without ManagedBean 2006-09-12 16:19 dzzhu
          最近我也在考慮jsf的exception統(tǒng)一處理的問題,jsf沒有提供像struts和webwork提供的那些exception定向功能。

          http://forum.java.sun.com/thread.jspa?threadID=765655
          這篇帖子部分的討論了解決辦法,用servlet filter,定制lifecycle,navigationhandler,ActionListener等,AOP應(yīng)該也是一種解決方法,MBean的getter我想就不用對(duì)應(yīng)了,考慮對(duì)應(yīng)shale的prerender等幾個(gè)action就OK了。  回復(fù)  更多評(píng)論
            
          # re: JSF without ManagedBean 2008-02-02 11:47 ghost
          實(shí)際上我自己是這樣實(shí)現(xiàn)的,將帶有狀態(tài)數(shù)據(jù)的類似prototype類型的對(duì)象被JSF配置,而類似于singleton的帶有操作方法的對(duì)象(不依賴于數(shù)據(jù))被Spring配置,這樣Spring就不會(huì)牽涉到WEB層的request,response,session等對(duì)象,這樣可以保證松耦合  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 四子王旗| 乳山市| 芒康县| 正镶白旗| 洛宁县| 依安县| 美姑县| 南开区| 潍坊市| 通山县| 仲巴县| 砚山县| 沙田区| 库尔勒市| 林西县| 赤峰市| 台南县| 策勒县| 南江县| 新宁县| 珠海市| 定安县| 兴化市| 宣武区| 汝城县| 泰顺县| 芒康县| 嫩江县| 工布江达县| 于田县| 荣成市| 梓潼县| 冀州市| 深圳市| 西青区| 永济市| 凤阳县| 安丘市| 平原县| 来宾市| 长沙县|