<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Spring和Webwork結合的方式

    Posted on 2005-11-23 13:52 李嵐 閱讀(916) 評論(0)  編輯  收藏 所屬分類: Java

    前兩種方式webwork的wiki里有,就不多說了,點這里可以查看。
    而以下的給出的思路是webwork mail list的討論的一種方案,應該是最好的一種方案。

    代碼1:

    public class SpringContainer implements Container {
        
    private
     ApplicationContext applicationContext;

        
    public SpringContainer(ServletContext servletContext) 
    {
            
    this.applicationContext =
     WebApplicationContextUtils.getWebApplicationContext(servletContext);
        }


        
    public SpringContainer(ApplicationContext applicationContext) {
            
    this.applicationContext =
     applicationContext;
        }


        
    /**
         * 
    @param key
         *            component class type or component name
         * 
    @return @throws

         *         ComponentNotFoundException
         
    */

        
    public Object getComponent(Object key) throws ComponentNotFoundException {
            
    if (applicationContext == null
    )
                
    throw new IllegalStateException("Spring Application context has not been set"
    );
            
    if (key == null
    )
                
    throw new ComponentNotFoundException("The component key can not be null"
    );
            
    if (key instanceof Class) 
    {
                Map beans 
    =
     applicationContext.getBeansOfType((Class) key);
                
    if (beans == null
    )
                    
    throw new ComponentNotFoundException("The container is unable to resolve single instance of " +
     ((Class) key).getName()
                            
    + ", none instances found"
    );
                
    if (beans.size() == 0 || beans.size() > 1
    )
                    
    throw new ComponentNotFoundException("The container is unable to resolve single instance of " +
     ((Class) key).getName()
                            
    + ", number of instances found was: " +
     beans.size());
                key 
    =
     beans.keySet().iterator().next();
            }

            
    return applicationContext.getBean(key.toString());
        }


        
    public void reload() {
            close();
            ((AbstractApplicationContext) applicationContext).refresh();
        }


        
    public void autowireComponent(Object bean) {
            ((AbstractApplicationContext) applicationContext).getBeanFactory().autowireBeanProperties(bean, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, 
    false
    );
        }


        
    public void close() {
            ((AbstractApplicationContext) applicationContext).close();
        }


    }

    代碼2:
    public class ComponentAutowireInterceptor implements Interceptor {


        
    public void destroy() 
    {
            
    // TODO Auto-generated method stub

        }


        
    public void init() {
            
    // TODO Auto-generated method stub

        }


        
    public String intercept(ActionInvocation invocation) throws Exception {
            Application.getInstance().getContainer().autowireComponent(invocation.getAction());
            
    return
     invocation.invoke();
        }


    }


    這幾段代碼,你不需要在spring里配置action,也不需要在xwork.xml里面配置external-ref。只要保證action引用的東東和spring里面同名就能夠auto wire by name了。

    原理:攔截器會在每個action之前調用autowireComponent(invocation.getAction())。這樣spring就會去自動組裝這個傳進來的action對象,而action對象里的屬性和spring里的bean id同名。所以spring就會自動將application.xml里對應的bean注射到action的屬性里去,從而達到把action按用戶希望的方式組裝起來的目的。

    如:
    appliaction.xml
        <bean id="myService">
            
    <property name="target">
                
    <bean class="myServiceDefaultImpl" autowire="byName">
              
    </property>
        
    </bean>

    xwork.xml
            <action name="myAction" class="myAction">
                
    <result name="success">/success.ftl</result>
            
    </action>

    Action:
    public class myAction extends ActionSupport {
        protected myService;
             .......

        }

    最后記得要在web.xml配上listener-class

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    posts - 7, comments - 23, trackbacks - 0, articles - 0

    Copyright © 李嵐

    主站蜘蛛池模板: 国产亚洲精品精品精品| 男人j进入女人j内部免费网站| 国产乱人免费视频| 中美日韩在线网免费毛片视频 | 曰批视频免费30分钟成人| 怡红院亚洲红怡院在线观看| 国产亚洲精品精华液| 国拍在线精品视频免费观看| 免费看美女午夜大片| 亚洲系列中文字幕| 亚洲伊人久久成综合人影院| 蜜臀AV免费一区二区三区| 又大又硬又粗又黄的视频免费看| 亚洲综合精品香蕉久久网97| 又大又黄又粗又爽的免费视频| 日韩免费人妻AV无码专区蜜桃 | 免费精品国自产拍在线播放 | 黄色免费在线观看网址| 99人中文字幕亚洲区| 亚洲精品99久久久久中文字幕| 精品福利一区二区三区免费视频| 国产免费牲交视频免费播放| 亚洲无码一区二区三区| 亚洲av日韩av激情亚洲| 亚洲AV无码成人精品区大在线| av大片在线无码免费| 国产免费一区二区三区在线观看| 精品国产亚洲一区二区三区在线观看 | A在线观看免费网站大全| 国产午夜不卡AV免费| 黄网站色视频免费看无下截| jlzzjlzz亚洲jzjzjz| 亚洲av激情无码专区在线播放| 俄罗斯极品美女毛片免费播放| 男女超爽刺激视频免费播放| 久久爰www免费人成| 中国国产高清免费av片| 边摸边吃奶边做爽免费视频99| 亚洲人成人无码.www石榴| 亚洲毛片基地日韩毛片基地| 亚洲AV一宅男色影视|