classpathxmlapplicationcontext 从类路径加载 xml 配置文件(如 applicationcontext.xml),解析并实例化 bean,支持单文件或多文件加载;通过 getbean() 按类型、名称+类型或仅名称获取 bean;建议显式指定 bean id/name,短生命周期容器应手动 close。

Spring 中使用 ClassPathXmlApplicationContext 加载 XML 配置并获取 Bean,核心是让 Spring 容器从类路径下读取配置文件,完成 Bean 的实例化与依赖注入。
确保 XML 配置文件在类路径下
Spring 会从 classpath(如 src/main/resources)查找配置文件。常见位置包括:
src/main/resources/applicationContext.xmlsrc/main/resources/spring-config.xml- 或任意自定义名称,只要路径正确且在 classpath 中
注意:不要写成绝对路径或 file:// 形式,否则会报找不到资源异常。
创建 ClassPathXmlApplicationContext 实例
直接传入 XML 文件名(支持多个,用字符串数组或可变参数):
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
或加载多个配置文件:
ApplicationContext context = new ClassPathXmlApplicationContext(
"dao-context.xml",
"service-context.xml"
);
容器启动时会解析 XML、注册 BeanDefinition、实例化单例 Bean(默认 scope)。
通过 getBean() 获取 Bean 实例
推荐使用泛型方式获取,避免强制类型转换:
- 按类型获取:
UserService service = context.getBean(UserService.class); - 按名称 + 类型获取:
UserService service = context.getBean("userService", UserService.class); - 仅按名称获取(返回 Object,需手动转型):
UserService service = (UserService) context.getBean("userService");
若 Bean 名称不明确,建议在 XML 中显式指定 id 或 name 属性;未指定时 Spring 默认使用类全限定名首字母小写作为 beanName(如 com.example.UserService → userService)。
记得关闭容器(可选但推荐)
如果 ApplicationContext 是短生命周期的(如测试、命令行工具),建议手动关闭以释放资源:
if (context instanceof ConfigurableApplicationContext) {
((ConfigurableApplicationContext) context).close();
}
对于 Web 应用,通常由 ContextLoaderListener 自动管理生命周期,无需手动 close。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











