一、利用注解配置类取代Spring配置文件
1、打开项目
Maven项目 - SpringDemo
2、创建新包
在net.hf.spring包创建day03子包
3、拷贝类与接口
将day02子包的类与接口拷贝到day03子包
4、创建注解配置类
在day03子包里创建SpringConfig类,取代Spring配置文件
package net.hf.spring.day03;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* 功能:注解配置类
* 作者:hf
* 日期:2023年02月21日
*/
@Configuration // 表明是Spring配置类
@ComponentScan("net.hf.spring.day03")
public class SpringConfig {
}
注解@Configuration声明当前类是一个配置类,对应一个Spring配置文件,可以取而代之。
注解@ComponentScan自动扫描包名下所有使用@Component、@Service、@Repository、@Mapper、@Controller的类,并注册为Bean。
注解@ComponentScan(“net.hf.spring.day03”)相当于Spring配置文件里的<context:component-scan base-package=“net.hf.spring.day03”/>。
5、创建测试类
在test/java里创建net.hf.spring.day03包,在包里创建TestKnight类
package net.hf.spring.day03;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
* 功能:测试骑士类
* 作者:hf
* 日期:2023年02月20日
*/
public class TestKnight {
private AnnotationConfigApplicationContext context; // 基于注解配置类的应用容器
@Before
public void init() {
// 基于注解配置类创建应用容器
context = new AnnotationConfigApplicationContext(SpringConfig.class);
}
@Test
public void testKnight() {
// 根据名称从应用容器里获取勇敢骑士对象
Knight knight1 = (Knight) context.getBean("RobinHood");
// 勇敢骑士执行任务
knight1.embarkOnQuest();
// 根据名称从应用容器里获取救美骑士对象
Knight knight2 = (Knight) context.getBean("rescueDamselKnight");
// 救美骑士执行任务
knight2.embarkOnQuest();
}
@After
public void destroy() {
// 关闭应用容器
context.close();
}
}
6、运行测试类
运行testKnight测试方法,查看结果