1.针对spring进行单元测试的时候,在测试类中直接可以注入spring配置文件,不需要通过ApplicationContext获取
UserServiceTest.java
package com.test.spring.dao;
import javax.annotation.Resource;
import org.junit.Test;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import com.test.spring.model.User;
import com.test.spring.service.UserService;
@ContextConfiguration("classpath:beans.xml")
public class UserServiceTest extends AbstractJUnit4SpringContextTests {
private UserService userService;
public UserService getUserService() {
return userService;
}
@Resource(name = "userService")
public void setUserService(UserService userService) {
this.userService = userService;
}
@Test
public void testAdd() {
this.userService.add(new User());
}
}
2.获取spring配置文件中的某个bean时,可以指定具体类型,不需要强制转换。
UserServiceTest2.java
package com.test.spring.dao;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.test.spring.model.User;
import com.test.spring.service.UserService;
public class UserServiceTest2 {
@Test
public void testAdd() {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
// UserService userService = (UserService) context.getBean("userService");
UserService userService = context.getBean("userService", UserService.class);
userService.add(new User());
}
}
3.spring3以后的版本中除了xml和annotation两种配置方式外,还新增了javaConfig配置方式
AppConfig.java
package com.test.spring.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.test.spring.dao.UserDAO;
import com.test.spring.dao.impl.UserDAOImpl;
import com.test.spring.service.UserService;
import com.test.spring.service.impl.UserServiceImpl;
@Configuration
public class AppConfig {
@Bean
public UserDAO userDAO() {
return new UserDAOImpl();
}
// 相当于xml中:<bean id = "userDAO" class="userDAO()"/>
@Bean
public UserService userService() {
UserServiceImpl service = new UserServiceImpl();
service.setUserDAO(userDAO());
return service;
}
// 相当于xml中:<bean id = "userService" class="userService()"/>
}
beans.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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.test.spring.config"></context:component-scan> </beans>