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

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

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

    一葉笑天
    雄關(guān)漫道真如鐵, 而今邁步從頭越。 從頭越, 蒼山如海, 殘陽(yáng)如血。
    posts - 73,comments - 7,trackbacks - 0
    原文地址:http://www.wajava.com/bbs/viewthread_thread,51

    1、在web.xml中加載Spring的配置文件
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring/*.xml</param-value>
    </context-param>

    <!--Spring ApplicationContext 載入 -->
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>


    2、配置屬性文件
    <!-- 屬性文件讀入 -->
    <bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <list>
    <value>classpath*:config/ct-db-c3p0.properties</value>
    <value>classpath*:config/mail.properties</value>
    </list>
    </property>
    </bean>

    3、配置數(shù)據(jù)源
    <!-- 數(shù)據(jù)源定義,使用Apache c3p0 連接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="${....common.dbutils.c3p0.driver}" />
    <property name="jdbcUrl" value="${....common.dbutils.c3p0.url}" />
    <property name="user" value="${....common.dbutils.c3p0.user}" />
    <property name="password" value="${....common.dbutils.c3p0.password}" />
    <property name="maxStatementsPerConnection" value="${....common.dbutils.c3p0.maxStatementsPerConnection}"/>
    <property name="checkoutTimeout" value="${....common.dbutils.c3p0.checkoutTimeout}"/>
    <property name="initialPoolSize" value="${....common.dbutils.c3p0.initialPoolSize}"/>
    <property name="minPoolSize" value="${....common.dbutils.c3p0.minPoolSize}"/>
    <property name="maxPoolSize" value="${....common.dbutils.c3p0.maxPoolSize}"/>
    <property name="maxStatements" value="${....common.dbutils.c3p0.maxStatements}"/>
    <property name="acquireIncrement" value="${....common.dbutils.c3p0.acquireIncrement}"/>
    <property name="maxIdleTime" value="${....common.dbutils.c3p0.maxIdleTime}"/>
    </bean>

    <!--Hibernate SessionFatory-->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="annotatedClasses">
    <list>
    <!--添加bean -->
    <value>....bean.AddressBook</value>
    .......
    </list>
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
    <prop key="hibernate.show_sql">false</prop>
    <prop key="hibernate.generate_statistics">false</prop>
    <prop key="hibernate.connection.release_mode">auto</prop>
    <prop key="hibernate.autoReconnect">true</prop>
    <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
    <prop key="hibernate.cache.use_query_cache">true</prop>
    </props>
    </property>
    </bean>

    <!--Hibernate TransactionManager-->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
    </bean>


    4、依賴(lài)注入配置
    <bean id="companyAction" class="....action.CompanyAction" scope="request"></bean>
    <bean name="companyBaseModel" class="....CompanyBaseModel"></bean>
    <bean class="....CompanyService" id="companyService"></bean>
    <bean class="....CompanyDAO" id="companyDAO"></bean>
    注:對(duì)beans的設(shè)置
    <beans default-autowire="byName" default-lazy-init="true">...</beans>



    5、Spring怎樣注入Class<T>(泛型類(lèi)型對(duì)象)?
    在事務(wù)配置時(shí),將proxy-target-class設(shè)置為false即可。不能為true,因?yàn)橐槍?duì)接口代理。
    如:<aop:config proxy-target-class="false">

    6、Spring中采用構(gòu)造方法注入注意要點(diǎn):
    在配置文件中顯式書(shū)寫(xiě)注入的參數(shù)。如:
    <bean class="....impl.JobService"
    id="retJobService">
    <constructor-arg ref="retJobDao" />
    </bean>
    多個(gè)參數(shù)的構(gòu)造函數(shù)示例
    <bean class="....impl.TypeService"
    id="typeService">
    <constructor-arg index="0" ref="typeDAO" />
    <constructor-arg index="1" type="boolean">
    <value>false</value>
    </constructor-arg>
    </bean>


    7、Spring 2.0 結(jié)合AspectJ pointcut語(yǔ)法配置AOP詳解
    Spring參考文檔 7.3 chema-based AOP support 提供了aspect,advisor,advide三種組裝方法的解釋?zhuān)渲衋spect是aspectJ原裝,但稍復(fù)雜,
    <aop:config proxy-target-class="true">
    <aop:advisor pointcut="execution(* *..BookManager.save(..))||execution(* *..BookManager.remove(..))" advice-ref="lowStockBookFlushingAdvice"/>
    <aop:advisor pointcut="execution(* *..BookStockChecker.getLowStockBooks())" advice-ref="lowStockBookCachingAdvice"/>
    </aop:config>
    以上幾句定義使用cglib創(chuàng)建Proxy, 為BookManager的save()和remove()加上lowStockBookFlushingAdvice,為 BookStockChecker.getLowStockBooks加上lowStockBookCachingAdvice.

    execution(* *..BookManager.save(..))
    第一顆* 代表ret-type-pattern 返回值可任意,
    *..BookManager 代表任意Pacakge里的BookManager類(lèi)。
    如果寫(xiě)成com.xyz.service.* 則代表com.xyz.service下的任意類(lèi)
    com.xyz.service..* com.xyz.service則代表com.xyz.service及其子package下的任意類(lèi)
    save代表save方法,也可以寫(xiě)save* 代表saveBook()等方法
    (..) 匹配0個(gè)參數(shù)或者多個(gè)參數(shù)的,任意類(lèi)型
    (x,..) 第一個(gè)參數(shù)的類(lèi)型必須是X
    (x,*,*,s,..) 匹配至少4個(gè)參數(shù),第一個(gè)參數(shù)必須是x類(lèi)型,第二個(gè)和第三個(gè)參數(shù)可以任意,第四個(gè)必須是s類(lèi)型。

    8、事務(wù)配置的不同形式
    事務(wù)配置一:
    <!-- 支持 @AspectJ 標(biāo)記-->
    <aop:aspectj-autoproxy />

    <!-- 以AspectJ方式 定義 AOP -->
    <aop:config proxy-target-class="false">
    <aop:advisor
    pointcut="execution(* ....recruitment.service.impl..*.*(..)) || execution(* ....employeeinfo.service.impl..*Service.*(..))"
    advice-ref="txAdvice" />
    </aop:config>

    <!-- 基本事務(wù)定義,使用transactionManager作事務(wù)管理,默認(rèn)get*方法的事務(wù)為readonly,其余方法按默認(rèn)設(shè)置.
    默認(rèn)的設(shè)置請(qǐng)參考Spring文檔事務(wù)一章. -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
    <tx:method name="get*" read-only="true" propagation="REQUIRED" />
    <tx:method name="load*" read-only="true" propagation="REQUIRED" />
    <tx:method name="find*" read-only="true" propagation="REQUIRED" />
    <tx:method name="*" propagation="REQUIRED" />
    </tx:attributes>
    </tx:advice>


    事務(wù)配置二:
    <!-- 支持 @AspectJ 標(biāo)記-->
    <aop:aspectj-autoproxy />

    <!-- 以AspectJ方式 定義 AOP -->
    <aop:config proxy-target-class="false">
    <aop:advisor
    pointcut="execution(* ....employeeinfo.service.impl..*Service.*(..))"
    advice-ref="txAdvice" />

    <aop:advisor
    pointcut="execution(* ....recruitment.service.impl..*.*(..)) "
    advice-ref="txAdviceRet" />
    </aop:config>

    <!-- 基本事務(wù)定義,使用transactionManager作事務(wù)管理,默認(rèn)get*方法的事務(wù)為readonly,其余方法按默認(rèn)設(shè)置.
    默認(rèn)的設(shè)置請(qǐng)參考Spring文檔事務(wù)一章. -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
    ......
    </tx:attributes>
    </tx:advice>
    <tx:advice id="txAdviceRet"
    transaction-manager="transactionManager">
    <tx:attributes>
    .........
    </tx:attributes>
    </tx:advice>

    事務(wù)配置三:(在java文件中配置)
    需要單獨(dú)配置事務(wù)的類(lèi)名前配置事務(wù)開(kāi)啟
    @Transactional(propagation = Propagation.SUPPORTS)
    需要使用事務(wù)的方法前配置開(kāi)啟事務(wù)的信息
    @Transactional(propagation = Propagation.REQUIRED)
    如:
    @Transactional(propagation = Propagation.SUPPORTS)
    public class ApplierService extends BaseService<Applier> implements
    IApplierService {
    @Transactional(propagation = Propagation.REQUIRED)
    public void addOrModify(Applier t) {
    applierDao.saveOrUpdate(toDBValue(t));
    }
    }

    9、正確配置重寫(xiě)父類(lèi)方法時(shí)事務(wù)
    參閱:http://aumy2008.javaeye.com/admin/blogs/152928

    10、spring中bean的作用域詳解
    bean屬性scope的選取(prototype、request、session、global session):
    <bean name="companyAction"
    class="....CompanyAction" scope="prototype"/>
    s:datetimepicker錄入框提交正常。
    prototype作用域部署的bean,每一次請(qǐng)求(將其注入到另一個(gè)bean中,或者以程序的方式調(diào)用容器的getBean()方法)
    都會(huì)產(chǎn)生一個(gè)新的bean實(shí)例,相當(dāng)一個(gè)new的操作,對(duì)于prototype作用域的bean,有一點(diǎn)非常重要,
    那就是Spring不能對(duì)一個(gè)prototype bean的整個(gè)生命周期負(fù)責(zé),
    容器在初始化、配置、裝飾或者是裝配完一個(gè)prototype實(shí)例后,將它交給客戶(hù)端,
    隨后就對(duì)該prototype實(shí)例不聞不問(wèn)了。不管何種作用域,容器都會(huì)調(diào)用所有對(duì)象的初始化生命周期回調(diào)方法,
    而對(duì)prototype而言,任何配置好的析構(gòu)生命周期回調(diào)方法都將不會(huì)被調(diào)用。
    清除prototype作用域的對(duì)象并釋放任何prototype bean所持有的昂貴資源,都是客戶(hù)端代碼的職責(zé)。
    (讓Spring容器釋放被singleton作用域bean占用資源的一種可行方式是,通過(guò)使用bean的后置處理器,
    該處理器持有要被清除的bean的引用。)

    request、session、global session使用的時(shí)候首先要在web.xml中做如下配置:
    如果你使用的是Servlet 2.4及以上的web容器,那么你僅需要在web應(yīng)用的XML聲明文件web.xml中增加下述ContextListener即可:
    <listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>

    <bean name="companyAction"
    class="....action.CompanyAction" scope="request"/>
    s:datetimepicker錄入框提交正常。

    <bean name="companyAction"
    class="....action.CompanyAction" scope="session"/>
    s:datetimepicker錄入框不能正常提交。

    <bean name="companyAction"
    class="....action.CompanyAction" scope="global session"/>
    java.lang.IllegalStateException: No Scope registered for scope 'global session'
    分析:global session作用域類(lèi)似于標(biāo)準(zhǔn)的HTTP Session作用域,不過(guò)它僅僅在基于portlet的web應(yīng)用中才有意義。

    Spring中bean的作用域相關(guān)網(wǎng)站:
    http://doc.javanb.com/spring-framework-reference-zh-2-0-5/ch03s04.html
    posted on 2008-12-26 13:45 一葉笑天 閱讀(1007) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 開(kāi)源技術(shù)
    主站蜘蛛池模板: 久久中文字幕免费视频| 国产午夜亚洲精品不卡电影| 四虎永久免费影院| avtt天堂网手机版亚洲| 99视频全部免费精品全部四虎| 成人免费视频一区| 亚洲精品国产自在久久| 美女视频黄频a免费观看| 亚洲精品成人区在线观看| 日韩亚洲人成在线综合| 1a级毛片免费观看| 国产真人无遮挡作爱免费视频 | 99在线视频免费观看| 99re在线这里只有精品免费| 免费99热在线观看| 欧洲美女大片免费播放器视频| 免费国产a国产片高清网站| 又粗又长又爽又长黄免费视频| 亚洲色无码专区在线观看| 嫩草成人永久免费观看| 免费h成人黄漫画嘿咻破解版| 边摸边吃奶边做爽免费视频99 | 美女被暴羞羞免费视频| 亚洲人成无码网WWW| 中国人免费观看高清在线观看二区| 免费理论片51人人看电影| 福利片免费一区二区三区| 中文亚洲AV片在线观看不卡| 国产一区二区免费视频| 亚洲另类古典武侠| 99免费视频观看| youjizz亚洲| 国产精品亚洲综合一区| 亚洲AV性色在线观看| 91免费人成网站在线观看18| 亚洲AV无码一区二区二三区软件 | 亚洲AV综合色区无码二区爱AV| 国产精品酒店视频免费看| a级日本高清免费看| 亚洲人成7777影视在线观看| 亚洲av无码国产精品色在线看不卡|