zoukankan      html  css  js  c++  java
  • Spring 属性配置

    此文已由作者尧飘海授权网易云社区发布。

    欢迎访问网易云社区,了解更多网易技术产品运营经验。


    随着Spring的不断发展与完善,早期它的功能可能只看做是IOC(反转控制)的容器,或者其最大的亮点为DI(依赖注入),但是现在随着Spring 2.5.6 的Release发布及3.0 版的推出及其他Spring工程的发布,如(Spring Batch,web Flow),其功能越来越多。

    通过上下文统一管理各种资源,通过相关设计模式完成属性的注入或实现方法,其次新的版本通过声明注入使得配置文件的大大简化,加上对其他的功能集成如Aop, Hibernate,Ibatis,JDBC,Toplink, Struts,Webwork,等等,使得和其他框架整合方便,Spring 里的设计方法也是以后需要学习的对象,总之通过此框架,使得开发人员把一些系统集成方面的工作简化了。目前大部分用的还是手工编写配置,框架人员可以通过编写相关的模板自动实现Spring配置文件的生成。

    XML文件里一般配置主要分为以下几种:

    1:属性配置,如:

        <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
           <property name="locations">
               <list>
                  <value>WEB-INF/classes/mail.properties</value>
                  <value>WEB-INF/classes/jdbc.properties</value>
               </list>
           </property>
        </bean>

    直接指出属性文件地址,以后面的引用中就可以直接${key},方便修改。

    2:数据源配置,如:

      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
           <property name="driverClassName" value="${jdbc.driverClassName}"/>
           <property name="url" value="${jdbc.url}"/>
           <property name="username" value="${jdbc.username}"/>
           <property name="password" value="${jdbc.password}"/>
        </bean>

    配置数据的连接方式,也可直接配置成JNDI的方式。

    3:事务管理,如:

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
           <property name="dataSource" ref="dataSource"/>
        </bean>

    对数据源进行事务管理。

    4.持久层的配置,轻量级的有hibernate,ibatis等等,hibernate配置如下:

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
           <property name="dataSource" ref="dataSource" />
           <property name="mappingResources">
               <list>
                  <value>com/netease/demo/bean/Food.hbm.xml</value>
                  <value>com/netease/demo/bean/User.hbm.xml</value>
                  <value>com/netease/demo/bean/Order.hbm.xml</value>
               </list>
               </property>
           <property name="hibernateProperties">
               <props>
    <prop key="hibernate.dialect">${hibernate.dialect}</prop>
    <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                  <prop key="hibernate.hbm2ddl.auto">update</prop>
               </props>
           </property>
           <property name="eventListeners">
               <map>
                  <entry key="merge">
    <bean class="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener"/>
                  </entry>
               </map>
           </property>
        </bean>

     5. AOP控制事务配置,即advisor和advice的設置,其中的切入點支持正则表达式的配置,設置如下:

      <aop:config>
                  <aop:advisor pointcut="execution(* com.netease.demo..dao.*(..))" advice-ref="txAdvice" order="0" />
               </aop:config>
     
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
           <tx:attributes>
               <tx:method name="remove*"/>
               <tx:method name="store*"/>
               <tx:method name="*" read-only="true"/>
           </tx:attributes>
        </tx:advice>

        6. 接下来的应该是系统的配置,如DAO,SERVICE等相关的配置,一般可以单独文件导入即可,此处只是一个简单的示例,我把二者合在一个文件,如:

       <bean id="userService" class="com.netease.demo.service.impl.UserServiceImpl" autowire="byName" />


         通过相关代码,工程运行和工具对配置文件进行单元测试,如:JUNIT等,在此推荐unitils,只要简单的在类上面加入声明即可实现, 如:

            @SpringApplicationContext({"applicationContext.xml", " applicationContext-dao.xml"})

              另外还可直接声明spring配置的DAO或service,它会直接注入声明的实现,如:

            @SpringBean("foodDao")

                 private FoodDao foodDao;

             通过使用Spring再集成其他工具如JUNIT,TESTNG等,可以非常方便,快速的对依赖资源的使用进行测试用例进行开发和运行,明显的提高测试效率。

      

    参考文献:

    http://www.unitils.org/cookbook.html

    http://www.springframework.org

    http://www.unitils.org/

    标签:

    服务端



    免费体验云安全(易盾)内容安全、验证码等服务


    更多网易技术、产品、运营经验分享请点击


    相关文章:
    【推荐】 图表设计-远不止“好看”这么简单

  • 相关阅读:
    cmake常用工程示例大集合
    qt---cdb(Microsoft Console Debugger)调试
    Qt Creator设置多核编译(-j8参数)
    这都是些老观点了。世界在变,时代在变。中国人观念进步的更快
    微软全球执行副总裁沈向洋:三年内用人工智能赚100亿美元
    C# 6.0
    node.js + mongodb
    分布式消息系统kafka
    jQuery插件开发
    jqgrid-asp.net-mvc
  • 原文地址:https://www.cnblogs.com/zyfd/p/9875973.html
Copyright © 2011-2022 走看看