- 浏览: 1250228 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (461)
- 心得体会 (166)
- Hibernate (9)
- Spring (12)
- Struts1 (3)
- Ajax (4)
- Java (54)
- 其他技术 (21)
- 数据库 (29)
- EXT (0)
- Struts2 (7)
- Xml (3)
- HTML (5)
- JavaScript (12)
- 面试相关 (3)
- BLOG (11)
- 计算机 (11)
- PMP (0)
- OGNL (1)
- LINUX (79)
- AIX (1)
- Ubuntu (14)
- Android (1)
- hadoop (3)
- LINUX debian (3)
- 心得体会 eclipse (2)
- JSTL (1)
- 心得体会 hadoop cdh3u5 (2)
- maven (5)
- Hive (1)
- 心得体会 工具使用 (3)
- spring data jpa Query By Example(QBE) (1)
- nginx (2)
- Apache (1)
- mysql (6)
- LINUX mysql (2)
- freemaker (1)
- 心得体会 FastDFS Nginx 断点续传 (1)
- LINUX FastDFS Nginx 断点续传 (1)
- 心得体会 Mybatis (2)
- 心得体会 mysql (4)
- php (1)
- logback 简介 (5)
- EL (1)
- Tomcat (2)
- win7 (1)
- LINUX maven (1)
- scrumworks (1)
- linux nginx (6)
- svn linux (1)
- mac (3)
- mac git (1)
- git (1)
- nexus (2)
- golang (1)
- LINUX Redis (1)
- mac oracle (1)
最新评论
-
a785975139:
有用
MySQL Error :SHOW PROFILES -
yijiulove:
弄了半天,参照你的方法解决了.特来感谢,知道可能是先加载,但是 ...
Spring和Mybatis整合时无法读取properties的处理方案 -
chenjinqi1987:
Missing com.sun.jdmk:jmxtools:jar:1.2.1 -
leifeng2:
请问怎么使用,运行之后d盘符没有生产音频文件呢?
java录音程序 -
sundful:
chenghong726 写道你好,我也遇到你这样的问题,按照 ...
Spring和Mybatis整合时无法读取properties的处理方案
本文从一个例子出发,根据TDD(测试驱动开发)要求,进行开发。只是用于演示如何使用Spring2.5提供的基于Annonation方式的IOC实现,进行TDD开发。
首先我们来看一下这个例子的要求:开发一个购物车对象,可以添加商品,删除商品,查询已购商口,结账功能。
第一步,先来完成添加商品功能,下面就按TDD开发要求,先编写单元测试:
下面是增对该功能,编写的测试代码
/** * @author xmatthew * */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:/applicationContext.xml"}) @TestExecutionListeners({DependencyInjectionTestExecutionListener.class}) public class CartTest { @Autowired private SuperStore superStore; @Test public void addCommodity() { Cart cart = new Cart(); Commodity commodity = superStore.getCommodity("1"/*电脑桌*/); cart.addCommodity(commodity); Assert.assertEquals(1, cart.size()); Assert.assertTrue(cart.contains(commodity)); } }
1 /** 2 * @author xmatthew 3 * 4 */ 5 @RunWith(SpringJUnit4ClassRunner.class) 6 @ContextConfiguration(locations = {"classpath:/applicationContext.xml"}) 7 @TestExecutionListeners({DependencyInjectionTestExecutionListener.class}) 8 public class CartTest { 9 10 @Autowired 11 private SuperStore superStore; 12 13 @Test 14 public void addCommodity() { 15 16 Cart cart = new Cart(); 17 Commodity commodity = superStore.getCommodity("1"/*电脑桌*/); 18 cart.addCommodity(commodity); 19 20 Assert.assertEquals(1, cart.size()); 21 Assert.assertTrue(cart.contains(commodity)); 22 23 } 24 } |
当然这个单元测试不能通过(无法编译)。接下来就是编写代码,让单元测试能顺利通过添加 applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:component-scan base-package="com.xmatthew.spring.tdd"/> <context:annotation-config/> </beans>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans 6 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 7 http://www.springframework.org/schema/context 8 http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 9 10 11 <context:component-scan base-package="com.xmatthew.spring.tdd"/> 12 <context:annotation-config/> 13 14 15 </beans> 16 |
Commodity.java
/** * @author xmatthew * */ public class Commodity { private String id; private String name; private BigDecimal price; /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(final Object other) { if (!(other instanceof Commodity)) return false; Commodity castOther = (Commodity) other; return new EqualsBuilder().append(id, castOther.id).append(name, castOther.name).append(price, castOther.price).isEquals(); } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return new HashCodeBuilder().append(id).append(name).append(price) .toHashCode(); } public Commodity(String id, String name, BigDecimal price) { super(); this.id = id; this.name = name; this.price = price; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } }
1 /** 2 * @author xmatthew 3 * 4 */ 5 public class Commodity { 6 7 private String id; 8 private String name; 9 private BigDecimal price; 10 11 /* (non-Javadoc) 12 * @see java.lang.Object#equals(java.lang.Object) 13 */ 14 @Override 15 public boolean equals(final Object other) { 16 if (!(other instanceof Commodity)) 17 return false; 18 Commodity castOther = (Commodity) other; 19 return new EqualsBuilder().append(id, castOther.id).append(name, 20 castOther.name).append(price, castOther.price).isEquals(); 21 } 22 23 /* (non-Javadoc) 24 * @see java.lang.Object#hashCode() 25 */ 26 @Override 27 public int hashCode() { 28 return new HashCodeBuilder().append(id).append(name).append(price) 29 .toHashCode(); 30 } 31 32 public Commodity(String id, String name, BigDecimal price) { 33 super(); 34 this.id = id; 35 this.name = name; 36 this.price = price; 37 } 38 39 public String getId() { 40 return id; 41 } 42 43 public void setId(String id) { 44 this.id = id; 45 } 46 47 public String getName() { 48 return name; 49 } 50 51 public void setName(String name) { 52 this.name = name; 53 } 54 55 public BigDecimal getPrice() { 56 return price; 57 } 58 59 public void setPrice(BigDecimal price) { 60 this.price = price; 61 } 62 63 64 } 65 |
SuperStore.java
/** * @author xmatthew * */ public interface SuperStore { Commodity getCommodity(String id); }
1 /** 2 * @author xmatthew 3 * 4 */ 5 public interface SuperStore { 6 7 8 Commodity getCommodity(String id); 9 } |
发表评论
-
springboot中spring.profiles.include的妙用
2019-09-30 10:03 1995我们有这样的一个spring ... -
java8--List转为Map、分组、过滤、求和等操作
2018-09-14 16:07 2812利用java8新特性,可以用简洁高效的代码来实现一些数据 ... -
intelliJ IDEA 文件修改之后的蓝色
2018-04-12 10:37 2435intelliJ IDEA链接svn之后,当文件发生修 ... -
Restful与webService区别
2018-02-13 09:59 773有好多人问我们在设计底层服务的时候到底是应该选 ... -
InputStream为什么不能被重复读取?
2017-07-17 14:36 949首先,熟悉Java的人可能都知道,Java中的Inputst ... -
CentOS下SWAP分区建立及释放内存
2016-02-18 14:20 3668方法一: 一、查看系统当前的分区情况:>free - ... -
CentOS下挂载硬盘(fdisk,mkfs.ext4,mount)
2016-02-18 13:55 7104centos挂载硬盘 挂载硬盘步骤: 1. 先分区 ... -
七个对我最重要的职业建议
2015-12-17 13:19 570Nicholas C. Zakas 是全世 ... -
Centos安装Vsftpd
2015-11-03 19:10 881安装部分摘自开源中国,最后红色部分解决无法登陆(cannot ... -
在logback中配置mybatis显示sql
2015-07-08 11:56 1181第一种方式、直接在logback.xml配置文件中添加: ... -
git 删除远程分支
2015-06-25 14:58 1011一不小心把本地的临时分支push到server上去了,想要删除 ... -
httpclient 上传、下载文件
2015-04-20 18:53 1097/** * 上传文件 * @throws Pars ... -
Java 7, Jenkins, Ubuntu 12.10 64bit issues
2015-01-20 16:44 876While installing Jenkins 1.486 ... -
在CentOS中安装中文字体
2014-08-08 14:25 1847以linux下安装宋体,黑体为例,介绍字体安装方法:第一步、 ... -
JCaptcha 验证码添加干扰线,显示中文验证码
2014-08-08 13:30 8617import java.awt.Color; import ... -
nginx记录post参数和自定义头信息
2014-08-01 19:10 20961.版本:nginx/1.4.4 记录post参数: ... -
理解 JMeter 聚合报告(Aggregate Report)
2014-06-27 17:01 9662Aggregate Report 是 JMeter 常用的一 ... -
系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
2014-06-26 14:34 2367一.系统吞度量要素: ... -
web 性能测试中的几个关键指标:并发用户数,QPS,用户平均请求等待时间
2014-06-26 13:40 1056关于并发用户数和QPS,自己一直被这两个概念纠结,阅读了一下相 ... -
QPS、PV和需要部署机器数量计算公式(转)
2014-06-26 11:33 1216术语说明:QPS = req/sec = 请求数/秒 【Q ...
相关推荐
2. **注解驱动开发(Annotation-based Development)**:Spring 2.5开始大规模支持Java注解,比如`@Service`、`@Repository`和`@Controller`,它们分别用于标记业务层、数据访问层和控制层的组件。这使得XML配置文件...
Spring2.5引入了对注解的支持,可以替代XML配置文件,使代码更加简洁和可读。 在整合这三个框架时,Spring作为容器管理Struts2的Action和Hibernate的SessionFactory。Spring的ApplicationContext会初始化所有依赖的...
在Spring框架中,TestContext模块为开发者提供了强大的测试支持,特别是在Spring 2.5版本中,这个测试框架进一步增强了测试的便利性和可扩展性。它允许我们以声明式的方式配置和管理测试环境,包括bean的初始化、...
**Eclipse** 是一个广泛使用的Java集成开发环境(IDE),它提供了对这些框架的强大支持,包括代码提示、自动构建路径、调试工具等。在Eclipse中,可以导入此项目,然后利用其内置的Struts2、Spring和Hibernate插件来...
Struts2、Spring2.5和Hibernate3.0是Java Web开发中三个非常重要的框架,它们各自负责不同的职责,但可以协同工作以构建高效、可维护的Web应用程序。本项目整合了这三个框架,并利用注解(Annotation)进行配置,...
DWR是一个允许JavaScript与Java服务器端进行交互的库,而Spring 2.5引入了对注解的强大支持,使得配置更为简洁。 首先,我们创建一个Controller类,这是Spring MVC中的核心组件。在下面的代码中,我们创建了一个名...
Spring Test模块在2.5版本中增加了对注解测试的支持,如`@ContextConfiguration`和`@Test`,使得单元测试和集成测试更加方便。 通过深入学习Spring 2.5的源码,开发者可以更好地理解Spring框架的设计思想和工作...
这些新特性包括:注解驱动的依赖性注入(annotation-driven dependency injection),使用注解而非XML元数据来自动侦测classpath上的Spring组件,注解对生命周期方法的支持,一个新的web控制器模型将请求映射到加...
在集成测试方面,Spring Test框架在2.5版本中也得到了增强,提供了模拟上下文(MockApplicationContext)和Web应用上下文(WebApplicationContext)的测试支持,方便开发者进行单元测试和集成测试。 总而言之,...
Spring 2.5 对测试框架进行了改进,引入了 @ContextConfiguration 和 @RunWith 注解,方便进行基于注解的测试,支持对 Spring 容器的控制和测试数据源的管理。 十、其他改进 Spring 2.5 还包含了对其他方面的改进,...
这个“基于Struts2.18+Spring2.5+Hibernate3.3+Annotation注解开发的电子商务网站demo”是一个很好的学习资源,可以帮助开发者加深对这些框架的理解并熟悉实际应用。 1. **Struts2.18**:Struts2是MVC(模型-视图-...
在Spring2.5版本中,对注解的支持得到了显著增强,如@Component、@Service、@Repository和@Controller等,使得配置文件更简洁,降低了XML配置的复杂性。同时,Spring的AOP支持允许我们使用注解来定义切面,提高代码...
9. **测试框架**:Spring 2.5加强了测试支持,提供了Mock对象和测试上下文框架,使单元测试和集成测试更加容易。 10. **国际化支持**:Spring 2.5对多语言环境的支持也有所增强,允许开发者更轻松地处理不同地区的...
提供了更多的测试支持,如`@ContextConfiguration`和`@WebAppConfiguration`注解,方便进行单元测试和集成测试。 10. **Java配置**: 虽然Spring 2.5还未引入完整的Java配置,但已经可以看到这一趋势的萌芽,为...
10. **集成测试支持**:Spring 2.5提供了丰富的测试工具,如`@ContextConfiguration`和`@DirtiesContext`等注解,帮助开发者编写更有效的集成测试。 综上所述,Spring 2.5在提升开发效率、简化配置、增强功能方面...
在测试方面,Spring2.5增加了对JUnit4的支持,使得编写单元测试更为便捷。开发者可以使用@RunWith(SpringJUnit4ClassRunner.class)注解来启动Spring应用程序上下文,并直接在测试方法上使用@Test注解。 **Spring ...
struts2.1 spring2.5 ibatis2.3 dwr3 annotation配置 集成 此中例子不完整. 如要下载:http://download.csdn.net/source/2138885
spring2.5 + hibernate3.2x 标注(annotation)开发的简单示例 http://blog.csdn.net/IamHades/archive/2008/01/11/2038188.aspx