关于ApplicationContext的三个常用实现类

 更新时间:2024年06月04日 09:31:53   作者:我一直在流浪  
这篇文章主要介绍了关于ApplicationContext的三个常用实现类,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

ApplicationContext的三个常用实现类

在这里插入图片描述

在这里插入图片描述

FileSystemXmlApplicationContext:可以加载磁盘路径下的配置文件(不常用)

public class Client {
    public static void main(String[] args) {
        ApplicationContext context = 
			new FileSystemXmlApplicationContext("C:\\Users\\ghh\\Desktop\\bean.xml");
        AccountService service = context.getBean("accountService", AccountService.class);
        AccountDao accountDao = context.getBean("accountDao", AccountDao.class);
        System.out.println(service);
        System.out.println(accountDao);
    }
}

ClassPathXmlApplicationContext:可以加载类路径下的配置文件

要求配置文件必须在类路径下面

public class Client {
    public static void main(String[] args) {
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean.xml");
        AccountService service = context.getBean("accountService", AccountService.class);
        AccountDao accountDao = context.getBean("accountDao", AccountDao.class);
        System.out.println(service);
        System.out.println(accountDao);
    }
}

AnnotationConfigApplicationContext:读取注解创建容器

applicationContext=null的问题

问题

要对一个公共模块项目,进行一个拆分,做一个细化。

调整的时候,调整了启单类的位置(并未注意到),单元测试的时候,就报错。 

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
 
@Component
public class SpringUtils implements ApplicationContextAware {
 
    private static ApplicationContext applicationContext;
 
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringUtils.applicationContext = applicationContext;
    }
 
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
 
    public static Object getBean(String name) {
        return applicationContext.getBean(name);
    }
 
    public static <T> T getBean(Class<T> requiredType) {
        return applicationContext.getBean(requiredType);
    }
 
}

setApplicationContext 调试的时候,方法没进去。说明bean没有初始化。

处理1:检查目录

启动类要在顶层的位置,这样才会读整个,就不用设置@ComponentScan

处理2:设置@ComponentScan

指定具体读取的路径

@ComponentScan(basePackages = {"com.basic.common"})
public class BasicCommonApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(BasicCommonApplication.class, args);
    }
 
    @Bean
    public DozerBeanMapperFactoryBean dozerBeanMapperFactoryBean() {
        return new DozerBeanMapperFactoryBean();
    }
 
}

心得:

如果在单个项目中,启动类需要在顶层的位置,才不用设置@ComponentScan,否则需要进行设置,才能读取得到。 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中Switch Case多个条件处理方法举例

    Java中Switch Case多个条件处理方法举例

    Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,这篇文章主要介绍了Java中Switch Case多个条件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • java实现检测是否字符串中包含中文

    java实现检测是否字符串中包含中文

    本文给大家分享了2个使用java检测字符串中是否包含中文的代码,都非常的实用,最后附上了各种字符的unicode编码的范围,方便我们以后使用正则进行匹配检测。
    2015-10-10
  • JAVA 泛型与通配符详解从原理到实战应用

    JAVA 泛型与通配符详解从原理到实战应用

    本章全面介绍了泛型的核心概念、设计初衷及三大使用方式(泛型类、泛型接口、泛型方法),重点讲解了泛型的擦除机制和通配符的灵活运用,强调了泛型在编译期类型安全和运行时类型擦除的优势,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • idea开启mybatis控制台SQL日志打印的代码示例

    idea开启mybatis控制台SQL日志打印的代码示例

    本文主要介绍了idea开启mybatis控制台SQL日志打印的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • Spring中三种常见Bean的初始化参数机制你了解吗

    Spring中三种常见Bean的初始化参数机制你了解吗

    在Spring框架中,Bean的实例化与初始化是一个复杂的过程,本文我们主要来聊一聊它的常见的三种机制:InitializingBean接口、BeanDefinitionRegistryPostProcessor接口和EnvironmentAware接口,感兴趣的小伙伴可以了解下
    2023-11-11
  • Request对象如何获取请求头数据

    Request对象如何获取请求头数据

    这篇文章主要介绍了Request对象如何获取请求头数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • java8如何通过poi+text将word转为pdf

    java8如何通过poi+text将word转为pdf

    这篇文章主要介绍了java8如何通过poi+text将word转为pdf问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 详解Java 缺失的特性扩展方法

    详解Java 缺失的特性扩展方法

    这篇文章主要为大家介绍了Java 缺失的特性扩展方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Java Servlet简单实例分享(文件上传下载demo)

    Java Servlet简单实例分享(文件上传下载demo)

    下面小编就为大家带来一篇Java Servlet简单实例分享(文件上传下载demo)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java中object类常用方法及应用场景详解

    Java中object类常用方法及应用场景详解

    这篇文章主要介绍了Java中object类常用方法及应用场景的相关资料,正确重写这些方法是面向对象设计的基本要求,有助于避免踩坑并提高代码质量,需要的朋友可以参考下
    2025-04-04

最新评论