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

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

随着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/

标签:

服务端

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

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

相关文章:
【推荐】 流式处理框架storm浅析(上篇)

转载于:https://www.cnblogs.com/163yun/p/9875971.html

Spring 属性配置相关推荐

  1. Spring Boot 配置元数据指南

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 遗失的拂晓 来源 | 公众号「锅外的大佬」 1. 概览 在编写 Spring Bo ...

  2. Spring Boot 属性配置和使用

    spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置. Spring Boot 系列 Spring Boot 入门 S ...

  3. 在运行时在Spring Cloud Config中刷新属性配置

    在本系列Spring Cloud Config的教程系列中,我们将讨论在运行时刷新属性配置的过程,我们将使用Spring Boot致动器/refresh端点进行/refresh . 此外,我们还将研究 ...

  4. spring 属性占位符_Spring属性占位符配置器–一些不太明显的选项

    spring 属性占位符 Spring的PropertySourcesPlaceholderConfigurer用于从XML或Java Config中定义的Spring bean定义外部化属性. Pl ...

  5. Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别、不可重复读与幻读的区别

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spr ...

  6. Spring Boot 属性配置你所不知道的细节

    今天我们要聊的这个问题,可能工作5年的资深程序员也不一定搞得很清楚,但是我敢保证在开发 Web 应用过程中大家都遇到过. 这个问题就是: Spring Boot 应用程序读取配置属性时,不同配置源的优 ...

  7. Spring Cloud Eureka 属性配置中文说明文档

    常用配置中文说明文档: 配置参数 默认值 说明 eureka.instance eureka.instance.prefer-ip-address true 不使用主机名来定义注册中心的地址,而使用I ...

  8. requestmapping配置页面后_第004课:Spring Boot 项目属性配置

    在项目中,很多时候需要用到一些配置的信息,这些信息可能在测试环境和生产环境下会有不同的配置,后面根据实际业务情况有可能还会做修改,针对这种情况,我们不能将这些配置在代码中写死,最好就是写到配置文件中. ...

  9. application.properties文件配置详解(核心属性和Web属性) ——Spring Boot配置

    ****************************************核心属性配置***************************************** # 文件编码 banne ...

最新文章

  1. php用命令查mysql_phpMySQL命令大全总结
  2. 高数之差分方程---定义
  3. 1. 初探MongoDB —— 介绍、安装和配置
  4. Python命令行运行文件的实例方法
  5. Mybatis如何打印sql语句
  6. ArrayList不是并发安全的?那么在高并发环境下怎么使用集合
  7. 论文首页下划线怎么对齐_毕业论文标准格式要求是什么样的?
  8. js ---- 数组操作
  9. 关于 iOS 中 new Date()的坑
  10. pr如何处理音效,如何让你的声音变得干净又清晰?PR音频降噪教程
  11. 气球java游戏_团队游戏 气球
  12. “扣哒杯” AI世青赛全国决赛落幕 集体奖和一等奖附加赛名单揭晓
  13. 神途boss_神途BOSS刷新了,女玩家以身冒险前往打骨魔洞
  14. Ansible Inventory内置参数
  15. 原来早就被安排了,旅行社用机器学习给你推个性化定制游
  16. python求一元二次方程的解
  17. Android: 主动抛出异常调试
  18. 到家服务公司php源码,微信小程序-仿五洲到家商城源码
  19. 八上人教版计算机笔记,人教版八年级上册Unit10课堂笔记
  20. 课堂随笔1 - MOOC网站日志分析 1

热门文章

  1. vr二维码_VR小花看看app
  2. java replaceall lt,JAVA中替换字符的方法replace和replaceAll 区别
  3. jquery获取元素宽高
  4. android使用的图片压缩格式,Android 之使用libjpeg压缩图片
  5. eclipse调出server_eclipse在server中tomcat server找不到的问题
  6. 特异性matlab,基于灰色理论计算位置特异性矩阵
  7. 编辑流程图_如何使用ProcessOn快速绘制一张高颜值流程图?
  8. cmd 调用webservice接口_c# 三种方法调用WebService接口
  9. 专业音频如何把电平转换成dbu_这是我见过最细致的音频系统增益设置指南,跟着学起来!...
  10. Docker使用中遇到的问题