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

一、准备测试环境

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文件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值