通过学生类Student阐述注解的方式实现IoC
Student类的定义如下:
@Service
public class Student implements HomeWork {
/**
* 写家庭作业
*/
@Override
public void doHomeWork() {
System.out.println("我是学生,我要写家庭作业");
}
}
注意此时的Student类加上了一个@Service
注解,这告诉Spring,让其管理这个类的对象,因此开发人员就不必管理Student对象了
与XML方式实现的IoC不同的是,注解方式除了配置@Service
注解外,还需要指定Spring需要管理的bean目录,否则Spring不能定位其需要管理的bean,具体配置如下
<context:component-scan base-package="tjpu.edu"></context:component-scan>
接下来在测试类AnnotationTest中通过依赖注入,将HomeWork对象注入到AnnotationTest测试类中,测试类代码如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:springmvc.xml")
public class AnnotationTest {
@Autowired
private HomeWork homeWork;
@Test
public void test(){
homeWork.doHomeWork();
}
}
运行单元测试,测试结果如下:
我是学生,我要写家庭作业
注:
Spring5引入的Junit4版本要4.12或以上
<!--Junit4-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!-- 表示开发的时候引入,发布的时候不会加载此包 -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>