采用注解的方式获取对象
实例:
步骤1:在com.hello.dao包下新建一个接口UserDao以及它的实现类UserDaoImpl
UserDao接口:
package com.hello.dao;
public interface UserDao {
public void login(String name,String pass);
}
UserDaoImpl实现类:
package com.hello.dao;
import org.springframework.stereotype.Component;
/*把普通类实例化到spring容器中,相当于配置文件中的 <bean id="" class=""/>*/
@Component("UserDao") //注解
public class UserDaoImpl implements UserDao {
@Override
public void login(String name, String pass) {
System.out.println("用户名:"+name+" 密码:"+pass);
}
}
步骤2:在com.hello.service包下新建一个接口UserService以及它的实现类UserServiceImpl
UserService接口:
package com.hello.service;
public interface UserService {
public void login(String name,String pass);
}
UserServiceImpl实现类:
package com.hello.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.hello.dao.UserDao;
@Component("UserService") //注解
public class UserServiceImpl implements UserService {
/*@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作*/
@Autowired //注解
private UserDao userDao;
@Override
public void login(String name, String pass) {
userDao.login(name, pass);
}
}
*注意一点:万一UserDao有多个实现了,比如UserDaoImpl1、UserDaoImpl2,
它们的注解分别为Component("UserDao1") 、Component("UserDao2")
那么在自动装装配的时候需要用@Qualifier指定是哪个,比如要指定第一个:
@Autowired
@Qualifier("UserDaoImpl1")
private UserDao userDao;
步骤3:配置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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 注解扫描 ,扫描com.hello下所有类的注解-->
<context:component-scan base-package="com.hello"/>
</beans>
步骤4:接下来就是测试了,具体TestClass类如下:
package com.hello.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 com.hello.service.UserService;
/*通过注解加载配置文件*/
@ContextConfiguration("classpath:applicationContext.xml")
/*让测试运行于spring测试环境*/
@RunWith(SpringJUnit4ClassRunner.class)
public class TestClass {
@Autowired
private UserService userService;
@Test
public void test(){
userService.login("陈赞", "1234");
}
}
测试类中最关键的地方就是下面这两个注解了,一个是通过注解加载配置文件,一个是让测试运行于spring测试环境
@ContextConfiguration("classpath:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
网友评论