- 浏览: 401412 次
- 性别:
- 来自: 昆明
文章分类
- 全部博客 (198)
- java (28)
- J2EE (19)
- struts (33)
- sping (13)
- hibernate (18)
- mybatis (15)
- connection pool (3)
- DB (26)
- SQL (21)
- html (13)
- js (7)
- json (3)
- jquery (2)
- document (17)
- linux (15)
- C# (1)
- url (2)
- eweb4j (1)
- Turbine (1)
- 框架 (11)
- jdbcTemplate (3)
- aop (2)
- windows (2)
- ubuntu (1)
- eclipse (11)
- JPA (8)
- svn (4)
- get 传值 (2)
- mysql (5)
- oracle (2)
- hadoop (1)
- MongoDB (2)
- spring (1)
- python (1)
最新评论
-
jcbingjc:
楼主,你好,按照上面的配置,我报如下错误:Missing Pe ...
[properJavaRDP]在网页中实现远程连接 -
sucful:
折腾了半天跑不通 ,要传就搞个完整的吧
Struts2 <sx:div/>实现页面模块异步刷新 -
Kattou:
你好! 看了你写的这个分页 感觉很好, 但是不怎么会用么,请指 ...
jsp分页控件 -
我叫PSB:
地址完全用不了
eclipse中的安装 jseclipse -
1111emotion:
我的工程里还是有乱码的情况,我该改的地方都改了。
Eclipse/MyEclipse更改默认字符集 设置UTF-8
最近一个项目使用的是struts2+Spring3+mybatis3的技术框架,由于开发人员都不熟悉如何进行单元测试,今天有空,简单研究了一下如何用junit4来测试基于这个框架的代码。由于struts的action只是负责前台的请求转发,而所有的业务都是在service层处理,因此一般情况下只需对service进行单元测试,而不需要对action进行单元测试。下面介绍一个简单的例子:
开发环境:
System:Windows xp
IDE:eclipse Java EE 3.6
Database:MySQL
开发依赖库:
JavaEE5、Spring 3.0.5、Mybatis 3.0.4、myBatis-spring-1.0、junit4.8.1
一、准备工作:
1、下载jar包 MyBatis3 jar 下载: 2、 添加的jar包如下: <?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> </configuration> <?xml version="1.0" encoding="UTF-8"?> <bean <tx:annotation-driven transaction-manager="transactionManager" /> </beans> package com.glen.model; import java.io.Serializable; public class Account implements Serializable { private static final long serialVersionUID = -7970848646314840509L; public Account() {
Spring3 jar下载:
http://www.mybatis.org/java.html
junit 4 jar下载:
http://www.junit.org/
3、创建mysql的数据库表,步骤如下:
1、进入mysql的安装路径,假设在:C:\Program Files\MySQL\MySQL Server 5.1\bin;
2、输入命令:mysql -uroot -p,enter,输入密码:admin;
3、mysql>use test;
5、mysql>grant all privileges on test.* to test@'localhost'identified by 'test';
6、mysql>flush privileges;
4、mysql>
create table account_bak(account_id int not null auto_increment,
username varchar(20),
password varchar(20),
create_time datetime,
primary key(account_id));
二、spring 和mybatis整合
1、在eclipse中创建一个java project,目录结构如下:
这是一个标准的maven工程的目录结构,下面逐一介绍上图涉及到的文件。
2、创建mybatis的配置文件mybatis.xml
上面的配置文件中,可以加入一些公共、常用的MyBatis方面的全局配置。如handler、objectFactory、plugin、以及mappers的映射路径(由于在spring配置文件spring.xml中的SqlSessionFactoryBean有配置mapper的location,这里就不需要配置)等。这个文件名称和下面的spring.xml中的configLocation中的值对应,不是随便写的。
3、创建spring的配置文件spring.xml
4、JavaBean(Model、Entity)相关类、及mybatis 的mapper对象
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
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
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" />
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="test" />
<property name="password" value="test" />
</bean>
<!-- 配置事务管理器,注意这里的dataSource和SqlSessionFactoryBean的dataSource要一致,不然事务就没有作用了 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- myBatis文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis.xml" />
<property name="mapperLocations"
value="classpath*:com/glen/model/*.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="accountDao" class="com.glen.dao.AccountDao">
<property name="sessionFactory" ref="sqlSessionFactory"/>
</bean>
<bean id="accountService" class="com.glen.service.AccountService">
<property name="accountDao" ref="accountDao"/>
</bean>
<context:annotation-config />
<context:component-scan base-package="com.glen" />
javabean:
import java.util.Date;
private Integer accountId;
private String username;
private String password;
private Date createTime;
super();
}
//下面是getter、setters
account-resultMap.xml
<?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mappernamespace="accountMap"> <resultMaptype="com.hoo.entity.Account"id="accountResultMap"> <idproperty="accountId"column="account_id"/> <resultproperty="username"column="username"/> <resultproperty="password"column="password"/> <resultproperty="createTime"column="create_time"/> </resultMap> </mapper>
|
account-mapper.xml
<?xml version="1.0" encoding="UTF-8"?> <mapper namespace="account"> |
5、创建dao:
package com.glen.dao; import javax.annotation.Resource; import org.apache.ibatis.session.SqlSession; import com.glen.model.Account;
private SqlSessionFactory sessionFactory; public AccountDao() { } public SqlSessionFactory getSessionFactory() { public void setSessionFactory(SqlSessionFactory sessionFactory) { public void insert(Account account) { SqlSession session = sessionFactory.openSession();
|
6、创建service:
package com.glen.service; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.glen.dao.AccountDao;
/** public void setAccountDao(AccountDao accountDao) {
|
Ok,至此spring 和mybatis就整合好了。
三、用junit进行单元测试
在src/test/java目录下,创建一个测试类:TestAccountService:
package com.glen.service; import static org.junit.Assert.assertEquals; import org.apache.log4j.Logger; import com.glen.model.Account;
@Before } // 创建一个帐户 } |
测试通过,显示如下界面:
四、使用spring的标记来注入对象
如上所述,我们在spring的配置文件spring.xml中,定义了两个业务模块相关的bean,accountDao和accountService,但是在实际项目中,这样的dao和service会非常多,如果每个都要这样定义,会造成配置文件的体积过大,可阅读性和可维护性都会变差。
那么如何对spring.xml进行瘦身呢?有两种方案,第一种方案是分模块开发,对于模块内部的bean,写在对应模块内部的spring配置文件中,如:spring-account.xml;第二种方案,就是使用spring的标记。下面我想说说的就是,用spring的标记:@Service @Repository @Resource来实现对象的注入。在上面这个例子基础上,做以下步骤的修改:
1、注释掉spring.xml中的两个bean:accountDao和accountService的定义
<!-- |
2、在AccountDao类中添加两个标记:@Repository和 @Resource,
@Repository @Resource |
这里添加@Repository标记,相当于在spring.xml中定义了一个bean,bean的id为这个类对象名称的第一个字母改成小写后的字符串,即:accountDao。添加 @Resource标记,相当于在accountDao这个bean中,引用了一个“sqlSessionFactory”。
3、在AccountService类中添加两个标记:@Service 和 @Resource:
@Service |
4、运行TestAccountService,同样测试通过。
发表评论
-
Mybatis配置文件修改后自动加载
2017-05-01 13:35 891Mybatis的mapper文件中的sql语句被修改后, ... -
SpringMvc+MyBatis+Freemarker 配置
2017-04-06 09:32 23761、引入Jar包: spring所有jar文件 my ... -
Struts2.1.8升级到Struts2.3.15.1的时候遇到了问题
2013-08-09 10:14 2025我把原来的Struts2.1.8升级到Struts2.3. ... -
struts2 url传值中文乱码解决方案
2012-09-21 16:21 1428HttpServletRequest request = Ac ... -
Mybatis执行SQL语句的方式
2012-07-02 10:30 2617最近在玩Mybatis,感觉官方文档对于通过执行mapper接 ... -
使用struts2中的ognl表达式调用类方法
2012-04-19 09:35 1376struts标签中value都会被解析,如,<s:pro ... -
使用struts2中的ognl表达式调用类方法(转)
2012-04-15 16:54 1292struts标签中value都会被解析,如,<s:pro ... -
Struts2 get 传值乱码过滤器配置
2012-04-15 16:31 1388package cn.org.du.Encode; im ... -
struts2 url传值中文乱码解决方案
2012-04-15 15:51 1521HttpServletRequest request ... -
struts2 result type 介绍
2012-03-23 09:14 1182在默认时,<result>标签的type属性值是“ ... -
Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效
2012-03-08 17:43 1966问题:在Struts2中<jsp:forward pag ... -
Struts2整合Spring、JPA
2012-02-27 09:46 1928一直觉得JPA很神秘,最近抽空看了下,下面贴出刚才做的St ... -
JAVA三大框架的各自作用
2011-11-25 00:04 3208一、Spring Spring是 ... -
mybatis简单运用(基于Annotation)
2011-11-24 00:17 1409本文主要介绍了如何使用mybatis进行简单的数据库操 ... -
使用SSH到底是为了快速开发,还是为了标准?
2011-11-25 00:00 2481使用SSH到底是为了快速开发,还是为了标准? 使用S ... -
Struts2、Spring、Hibernate 高效开发的最佳实践
2011-11-26 00:16 1276引言 SSH(Struts2+Spring+Hi ... -
Struts2与urlrewrite整合
2011-11-24 00:15 3358Struts2与URL Rewrite整合注意的地方 ... -
SiteMesh模板应用与struts2整合
2011-11-23 09:23 1744SiteMesh是一个非常优秀 ... -
Struts2 Convention零配置使用
2011-11-20 00:47 3410受到大环境的影响:Sping、Hibernate、Strut ... -
struts2 配置详解
2011-11-18 10:00 1672基础Constants struts.devMo ...
相关推荐
本篇将主要探讨Spring框架的几个核心知识点,包括事务传播属性、注解式事务管理、注解式开发、SSM(Spring+SpringMVC+MyBatis)集成开发流程以及Spring与JUnit测试的整合。 **一、事务传播属性失效问题及解决** ...
在这个"spring mvc简单测试的可运行的源代码"中,我们可以学习到如何配置和运行一个基础的Spring MVC应用。 1. **环境准备**:首先,你需要安装Java JDK和Apache Maven或Gradle,它们是构建和管理Java项目的工具。...
10. **单元测试和集成测试**:为了确保代码质量,开发者通常会编写JUnit测试用例进行单元测试,使用Mockito模拟外部依赖。集成测试则通过如Spring Boot的TestRestTemplate或JUnit + Spring Test进行,确保各组件协同...
3. **Jenkins**:掌握Jenkins持续集成工具,实现自动化构建和测试。 ### 七、其他技能 1. **单元测试与Mocking**:使用JUnit、Mockito进行单元测试,确保代码质量。 2. **性能监控**:了解JProfiler、VisualVM等...
7. **测试代码**:项目可能包含JUnit测试用例,帮助开发者验证代码的正确性。 由于MyBatis-CMEU-Maven 已经不再维护,并且建议使用Spring-generator替代,这可能意味着Spring-generator提供了更多功能或者更好的...
1. **单元测试**:SpringBoot支持JUnit和Mockito进行单元测试,`@SpringBootTest`注解可以帮助创建Spring应用上下文。 2. **集成测试**:使用`@WebMvcTest`或`@DataJpaTest`进行特定层的测试。 ### 七、SpringBoot...
- 使用JUnit进行单元测试,确保功能正常。 - 打包成jar或war,部署到服务器,如Tomcat。 通过以上步骤,我们可以构建一个基于SpringBoot 2.2.6、MyBatis 3.5.4和JWT的前后端分离应用。这不仅可以实现安全的身份...
15. **单元测试和集成测试**:可能使用JUnit和Mockito等工具进行代码测试,确保功能的正确性。 通过学习和实践这个项目,开发者能够掌握Java Web开发的全貌,包括前后端交互、数据库操作、权限控制等多个方面,对...
JUnit支持断言、参数化测试和测试套件等功能。同时,Mockito可能被用来创建和配置模拟对象,以隔离测试目标代码,避免外部依赖对测试结果的影响。 **5. API设计与RESTful原则** API(应用程序编程接口)是啤酒库存...
8. **测试框架**:JUnit、Mockito等工具用于单元测试,而Selenium、Appium等则支持功能测试和UI自动化测试,确保整合后的系统稳定可靠。 9. **安全集成**:OAuth2、JWT(JSON Web Tokens)等协议用于实现身份验证和...
9. **测试**:确保登录功能的正确性通常需要单元测试和集成测试。JUnit是Java常用的单元测试框架,而Mockito可以帮助模拟依赖关系。 10. **版本控制**:由于文件名中包含“master”,可能意味着项目使用了Git进行...
13. **单元测试和持续集成**:JUnit是Java的单元测试框架,而Maven和Gradle是常见的构建工具,Jenkins等工具则用于持续集成和自动化部署。 14. **Java编程规范**:遵循一定的编码规范如命名规则、注释标准等,可以...