直挂云帆济沧海,展翅遨翔登九天!

我要飞得更高...

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  19 随笔 :: 0 文章 :: 5 评论 :: 0 Trackbacks
SpringapplicationContext.xml中配置映射文件的方法:
1。减少配置文件里配置信息的数量
配置applicationContext.xml或者分布在其它的xml文件中的bean时,设置bean与bean之间的相互依赖关系是一件痛苦且容易出错的事。autowire属性的出现减轻了配置文件的容量。
<bean>的autowire属性有6个值。分别为:

No:即不启用自动装配。Autowire默认的值。

byName:通过属性的名字的方式查找JavaBean依赖的对象并为其注入。
byType:通过属性的类型查找JavaBean依赖的对象并为其注入。
constructor:通byType一样,也是通过类型查找依赖对象。
autodetect:在byTypeconstructor之间自动的选择注入方式。
default:由上级标签<beans>default-autowire属性确定。
在<beans default-autowire="byName">可以为本xml文件设置默认的自动装配的类型例如byName,当然在设置具体的<bean id="***" class="***" autowire="byType">时,会自动改变默认的byName为byType。
2。在web.xml中通过配置如下参数

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:spring/*.xml</param-value>
    </context-param>   
会自动把WEB-INF/classes/sring目录下的所有以.xml结尾的文件加载spring容器进行管理,而不必手动编写每个applicationContex.xml,accessContext.xml等配置文件。
3。利用属性为mappingDirectoryLocation来配置相关的目录位置,从而避免为该目录下的所有文件名进行配置
<property name="mappingDirectoryLocation">
<list>
<value>classpath:/package1/<value>
</list>
</property>
如:
<!-- 设置Hibernate3的SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">net.sf.hibernate.dialect.SQLServerDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.generate_statistics">true</prop>
                <prop key="hibernate.connection.release_mode">auto</prop>
                <prop key="hibernate.autoReconnect">true</prop>
            </props>
        </property>
        <property name="mappingDirectoryLocations">       
            <list>      
               <value>classpath:com/apache/model</value>      
            </list>
        </property>   

    </bean>
4。消除ProxyFactoryBean的繁重配置
a.通过继承于parent ProxyFactoryBean
b.使用aop自动代理的方式
在Spring中进行事务的管理均是基于aop的方式,为每个需要事务管理的bean均设定相应的ProxyFactoryBean又是一件非常繁重的工作。使用自动代理可以消除这样的重复的工作。方法如下,声明DefaultAdvisorAutoProxyCreator为所有的advisor作为代理,在context上下文中查找所有的advisor,然后自动代理那些被在pointcut加入了切面的bean。针对事务使用spring中的事务的advisor,TransactionAttributeSourceAdvisor。
该advisor有两种方式进行注入,一种是setter方式,如下:
    <!-- 配置自动代理事务 -->
    <bean id="transactionAdvisor" class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
        <property name="transactionInterceptor" ref="transactionInterceptor"/>
    </bean>
另一种是constructor方式,如下:
    <!-- 配置自动代理事务 -->
    <bean id="transactionAdvisor" class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
     <constructor-arg>
        <ref bean="transactionInterceptor"/>
     </constructor-arg>        
    </bean>
建议以constructor方式进行注入。

posted on 2008-07-28 23:04 周大侠 阅读(198) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: