关于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设计模式中单一职责原则详解

    Java设计模式中单一职责原则详解

    这篇文章主要介绍了Java设计模式中单一职责原则详解,单一职责原则 (SRP) 是软件设计中的一个重要原则,它要求每个类只负责一个职责,需要的朋友可以参考下
    2023-05-05
  • springboot实现增加黑名单和白名单功能

    springboot实现增加黑名单和白名单功能

    本文主要介绍了springboot实现增加黑名单和白名单功能,就是单纯的实现filter,然后注册到springboot里面,在filter里面进行黑白名单的筛选,感兴趣的可以了解一下
    2024-05-05
  • Java定时任务的三种实现方法

    Java定时任务的三种实现方法

    在应用里经常都有用到在后台跑定时任务的需求。举个例子,比如需要在服务后台跑一个定时任务来进行垃圾回收
    2014-04-04
  • Java使用Socket通信传输文件的方法示例

    Java使用Socket通信传输文件的方法示例

    这篇文章主要介绍了Java使用Socket通信传输文件的方法,结合实例形式分析了java socket编程实现文件传输操作的相关技巧,需要的朋友可以参考下
    2017-06-06
  • mybatis的使用-Mapper文件各种语法介绍

    mybatis的使用-Mapper文件各种语法介绍

    这篇文章主要介绍了mybatis的使用-Mapper文件各种语法介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 一文带你搞懂Maven的继承与聚合

    一文带你搞懂Maven的继承与聚合

    这篇文章主要为大家详细介绍了Maven的继承和聚合以及二者的区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-07-07
  • SpringBoot项目如何使用多线程执行定时任务

    SpringBoot项目如何使用多线程执行定时任务

    在SpringBoot项目中使用多线程执行定时任务,可以避免一个耗时任务影响其他任务,通过配置线程池任务调度器,Spring会自动使用多线程执行定时任务
    2025-01-01
  • java使用RandomAccessFile类基于指针读写文件实例代码

    java使用RandomAccessFile类基于指针读写文件实例代码

    这篇文章主要介绍了java使用RandomAccessFile类基于指针读写文件实例代码,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • 图文详解Maven工程打jar包的N种方式

    图文详解Maven工程打jar包的N种方式

    最近在打包maven项目时,该项目中仅有一个测试类,想打成jar包运行测试,所以下面这篇文章主要给大家介绍了关于Maven工程打jar包的N种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • 图文详解Java中的序列化机制

    图文详解Java中的序列化机制

    java中的序列化可能大家像我一样都停留在实现Serializable接口上,对于它里面的一些核心机制没有深入了解过。本文将通过示例带大家深入了解Java中的序列化机制,需要的可以参考一下
    2022-10-10

最新评论