ApplicationContext功能介绍
从上图看 ApplicaitonContext从BeanFactory 拓展如下4个功能
1.国际化资源(messageSource)
1.1 准备国际化文件
1.2 测试代码
@SpringBootApplication
@Slf4j
public class CodeAnaApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(CodeAnaApplication.class, args);
log.info("国际化测试");
//通过key 获取语言翻译结果
String hiEn = context.getMessage("hi", null, Locale.ENGLISH);
log.info("英文key为hi的翻译:{}",hiEn);
String hiZh = context.getMessage("hi", null, Locale.CHINA);
log.info("中午key为hi的翻译:{}",hiZh);
}
2.根据通配符加载系统资源(ResourcePatternResolver)
2.1 编码测试
log.info("测试ApplicationContext根据通配符加载系统资源");
Resource[] resources = context.getResources("classpath:application.yml");
for (int i = 0; i < resources.length; i++) {
log.info("加载第{}个资源:{}", i + 1, resources[i]);
}
2.2 测试结果
3.发布事件对象(ApplicationEventPublisher)
3.1 创建事件发布器 和接收器
// 创建时间发布器 和事件接收器
static class UserRegisterEvent extends ApplicationEvent {
public UserRegisterEvent(Object source) {
super(source);
}
}
// 创建一个事件接收器(任何的java bean 都可以作为 事件接收器)
@Component
class Component1{
@EventListener//表示是接收事件的方法
public void receiveEvent(UserRegisterEvent userRegisterEvent){
log.info("收到事件:{}",userRegisterEvent);
}
}