您的位置:首页 > 编程语言 > Java开发

spring学习笔记 -- day05 spring整合Junit

2017-08-14 15:04 495 查看

一、准备测试环境

1、创建项目,导入jar包



注意:要额外导入spring-test-4.2.4.RELEASE.jar



此jar包中的运行函数知道spring容器的存在。

2、整合所用的注解详解

@ContextConfiguration:用于指定spring配置文件的位置

@RunWith:用于替换Junit中的运行器

3、准备service层和dao层代码

package cn.itcast.service;

/**
* service层接口
* @version V1.0
*/
public interface CustomerService {

public void saveCust();

public void deleteCust();

public void updateCust();

public void findCust();
}
package cn.itcast.service.impl;

import org.springframework.beans.factory.annotation.Autowired;

import cn.itcast.dao.CustomerDao;
import cn.itcast.service.CustomerService;

/**
* 业务层实现类
*/
public class CustomerServiceImpl implements CustomerService {

private CustomerDao customerDao;

public void setCustomerDao(CustomerDao customerDao) {
this.customerDao = customerDao;
}

@Override
public void saveCust() {
customerDao.saveCust();
}

@Override
public void deleteCust() {
customerDao.deleteCust();
}

@Override
public void updateCust() {
customerDao.updateCust();
}

@Override
public void findCust() {
customerDao.findCust();
}

}
package cn.itcast.dao;

/**
* 持久层接口
*
* @version V1.0
*/
public interface CustomerDao {
public void saveCust();

public void deleteCust();

public void updateCust();

public void findCust();
}
package cn.itcast.dao.impl;

import cn.itcast.dao.CustomerDao;

public class CustomerDaoImpl implements CustomerDao {

@Override
public void saveCust() {
System.out.println("执行了保存的方法");
}

@Override
public void deleteCust() {
System.out.println("执行了删除的方法");

}

@Override
public void updateCust() {
System.out.println("执行了更新的方法");

}

@Override
public void findCust() {
System.out.println("执行了查询的方法");

}

}

二、使用xml配置方式

1、编写配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<!-- Service层 -->
<bean id="custService" class="cn.itcast.service.impl.CustomerServiceImpl">
<property name="customerDao" ref="customerDao"></property>
</bean>

<!-- Dao层 -->
<bean id="customerDao" class="cn.itcast.dao.impl.CustomerDaoImpl"></bean>

</beans>

2、编写测试类

package cn.itcast.test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import cn.itcast.service.CustomerService;

/**
* 客户操作的测试类
*
* @version V1.0
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:beans.xml") // 指定spring配置文件位置
public class CustTest {

@Autowired
private CustomerService custService;

@Test
public void add() {
custService.saveCust();
}

@Test
public void del() {
custService.deleteCust();
}

@Test
public void upd() {
custService.updateCust();
}

@Test
public void fin() {
custService.findCust();
}

}

三、使用纯注解配置方式

1、什么是纯注解

没有bean.xml配置的文件的方式



2、改造servcie层和dao层,使用注解配置

package cn.itcast.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.itcast.dao.CustomerDao;
import cn.itcast.service.CustomerService;

/**
* 业务层实现类
*/
@Service("custoemrService")
public class CustomerServiceImpl implements CustomerService {

@Autowired
private CustomerDao customerDao;

@Override
public void saveCust() {
customerDao.saveCust();
}

@Override
public void deleteCust() {
customerDao.deleteCust();
}

@Override
public void updateCust() {
customerDao.updateCust();
}

@Override
public void findCust() {
customerDao.findCust();
}

}
package cn.itcast.dao.impl;

import org.springframework.stereotype.Repository;

import cn.itcast.dao.CustomerDao;

@Repository("customerDao")
public class CustomerDaoImpl implements CustomerDao {

@Override
public void saveCust() {
System.out.println("执行了保存的方法");
}

@Override
public void deleteCust() {
System.out.println("执行了删除的方法");

}

@Override
public void updateCust() {
System.out.println("执行了更新的方法");

}

@Override
public void findCust() {
System.out.println("执行了查询的方法");

}

}

3、创建配置文件类

package cn.itcast.conf;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
* spring配置稳健类
*
* @version V1.0
*/
@Configuration
@ComponentScan(basePackages={"cn.itcast"})//配置扫描的包
public class SpringConfig {

}

4、编写测试类

package cn.itcast.test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import cn.itcast.conf.SpringConfig;
import cn.itcast.service.CustomerService;

/**
* 客户操作的测试类
*
* @version V1.0
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=SpringConfig.class) // 指定spring配置文件位置
public class CustTest {

@Autowired
private CustomerService custService;

@Test
public void add() {
custService.saveCust();
}

@Test
public void del() {
custService.deleteCust();
}

@Test
public void upd() {
custService.updateCust();
}

@Test
public void fin() {
custService.findCust();
}

}

四、为什么不能把注解类配置到xml中

1、配到XML中能不能用呢?

答案是肯定的,没问题,可以使用。

2、为什么不采用配置到xml中的方式呢?

这个原因是这样的:

        第一:当我们在xml中配置了一个bean,spring加载配置文件创建容器时,就会创建对象。

        第二:测试类只是我们在测试功能时使用,而在项目中它并不参与程序逻辑,也不会解决需求上的问题,所以创建完了,并没有使用。那么存在容器中就会造成资源的浪费。

        所以,基于以上两点,我们不应该把测试配置到xml文件中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: