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/

    标签:

    服务端



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


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


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

  • 相关阅读:
    Linkerd 2.10(Step by Step)—将 GitOps 与 Linkerd 和 Argo CD 结合使用
    Linkerd 2.10(Step by Step)—多集群通信
    Linkerd 2.10(Step by Step)—使用 Kustomize 自定义 Linkerd 的配置
    Linkerd 2.10(Step by Step)—控制平面调试端点
    Linkerd 2.10(Step by Step)—配置超时
    Linkerd 2.10(Step by Step)—配置重试
    Linkerd 2.10(Step by Step)—配置代理并发
    本地正常运行,线上环境诡异异常原因集合
    Need to invoke method 'xxx' declared on target class 'yyy', but not found in any interface(s) of the exposed proxy type
    alpine 安装常用命令
  • 原文地址:https://www.cnblogs.com/zyfd/p/9875973.html
Copyright © 2011-2022 走看看