1. 程式人生 > >spring配置檔案詳解(applicationContext.xml)

spring配置檔案詳解(applicationContext.xml)

上次在開發時遇到建立的新路徑下的model類在部署時不能與資料庫表對映的問題,找到原因是在applicationContext.xml檔案中沒有新增我新建立的路徑,所以spring找不到我的model類,也就無法完成部署。
這裡說一下applicationContext的檔案詳解。
從上到下

<bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name
="locations">
<list> <value>classpath:database.properties</value> <value>classpath:wssuap.properties</value> <value>classpath:application.properties</value> </list> </property
>
</bean>

我們定義了一個PropertyPlaceholderConfigurer類的例項,並將其位置屬性設定為我們的屬性檔案。該類被實現為Bean工廠的後處理器,並將使用定義在檔案中的屬性來代替所有的佔位符(${…}value)。
接著是資料來源:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
        <property name="driverClassName" value="${hibernate.connection.driver_class}"
/> <property name="url" value="${hibernate.connection.url}"/> <property name="username" value="${hibernate.connection.username}"/> <property name="password" value="${hibernate.connection.password}"/> <property name="maxActive" value="${hibernate.connection.maxActive}" /> <property name="maxIdle" value="${hibernate.connection.maxIdle}" /> <property name="maxWait" value="${hibernate.connection.maxWait}" /> <property name="removeAbandoned" value="${hibernate.connection.removeAbandoned}"/> <property name="removeAbandonedTimeout" value="${hibernate.connection.removeAbandonedTimeout}"/> <property name="logAbandoned" value="${hibernate.connection.logAbandoned}"/> </bean>

我的工程中資料來源的配置在database.properties檔案中,修改資料庫連線設定可以在裡面操作。
然後是session工廠

<bean id="sessionFactory"
        class="com.wondersgroup.framework.core5.dao.support.EnhancedAnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation"
            value="classpath:hibernate.cfg.xml" />
        <!-- dir location should be set here if *.hbm.xml exsited in the current project-->
        <property name="mappingDirectoryLocations">
            <list>
                <!--<value>classpath:/com/wondersgroup/wssip/bc</value>comment-->
            </list>
        </property>
        <!-- any jar with zipping *.hbm.xml should be set here(for junit and deployment respectively) -->
        <property name="mappingJarLocations">
            <list>
                <!-- for Deployment Environment -->
                <!-- 
                    <value>WEB-INF/lib/cuteframework-core-4.1-SNAPSHOT.jar</value>
                    <value>WEB-INF/lib/cuteframework-security-4.0.jar</value>
                    <value>WEB-INF/lib/cuteframework-appmgr-4.0.jar</value>
                    <value>WEB-INF/lib/wsscclib-rollback-1.0-SNAPSHOT.jar</value>
                -->
            </list>
        </property>
        <property name="annotatedPackagePrefixes">
            <list>
                <value>com.wondersgroup.wssuap</value>
                <value>com.wondersgroup.hzrsmh.wssip</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    ${hibernate.dialect}
                </prop>
            </props>
        </property>
        <property name="lobHandler" ref="${jdbc.handler}" />
    </bean>

查詢資料找到sessionFactory的作用,貼上過來:
SessionFactory:
1,用於管理Hibernate會話(session)的物件,所以,最最最簡單的理解,你可以把sessionFactory想想成裡面有一個DataSource;
2,這個物件建立了,hibernate才真正和資料庫連線上了。即SessionFactory維護著所有連線物件已經連線物件的分配和銷燬;
3,SessionFactory是執行緒安全的,並且建立和銷燬需要消耗比較大的資源,所以整個應用裡面針對一個數據庫只需要一個SessionFactory即可;
4,SessionFactory管理著配置在其中的對映物件的解析資料,動作監聽器,NamedQuery等大量資訊;
5,SessionFactory裡面有一個二級快取,可以提供更大生命週期的快取策略;
我靠markdown出bug了,暫時寫到這。。
1     
2      
3