当时做铂金网校的网站维护,遇到了一个读取Spring配置文件,取的ApplicationContext时,出现了NullPointerException。
使用ApplicationContextAware进行读取Spring配置文件取的对象。
具体代码如下:
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext; //Spring应用上下文环境
/**
* 实现ApplicationContextAware接口的回调方法,设置上下文环境
* @param applicationContext
* @throws BeansException
*/
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtil.applicationContext = applicationContext;
}
/**
* @return ApplicationContext
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 获取对象
* @param name
* @return Object 一个以所给名字注册的bean的实例
* @throws BeansException
*/
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
/**
* 获取类型为requiredType的对象
* 如果bean不能被类型转换,相应的异常将会被抛出(BeanNotOfRequiredTypeException)
* @param name bean注册名
* @param requiredType 返回对象类型
* @return Object 返回requiredType类型对象
* @throws BeansException
*/
public static Object getBean(String name, Class requiredType) throws BeansException {
return applicationContext.getBean(name, requiredType);
}
/**
* 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true
* @param name
* @return boolean
*/
public static boolean containsBean(String name) {
return applicationContext.containsBean(name);
}
/**
* 判断以给定名字注册的bean定义是一个singleton还是一个prototype。
* 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
* @param name
* @return boolean
* @throws NoSuchBeanDefinitionException
*/
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
return applicationContext.isSingleton(name);
}
/**
* @param name
* @return Class 注册对象的类型
* @throws NoSuchBeanDefinitionException
*/
public static Class getType(String name) throws NoSuchBeanDefinitionException {
return applicationContext.getType(name);
}
/**
* 如果给定的bean名字在bean定义中有别名,则返回这些别名
* @param name
* @return
* @throws NoSuchBeanDefinitionException
*/
public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {
return applicationContext.getAliases(name);
}
}
完成这个类之后,我们可以在Action中进行调用,当然也可以在jsp中进行调用。
//不用再加载springContext.xml文件,因为在web.xml中配置了,在程序中启动是就有了.
StudentManagersm=(StudentManagerImpl)SpringContextUtil.getBean("studentManager");
通过这句话来进行使用,读取你自己配置SpringBean就可以了。
注意:
一定要在Spring的配置文件applicationContext.xml中加上:
<bean id="SpringContextUtil " class="项目中applicationContext的类路径比如:com.ptlearning.student.SpringContextUtil " singleton="true" />
当对SpringContextUtil 实例时就自动设置applicationContext,以便后来可直接用applicationContext
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关推荐
本篇文章将深入探讨如何在Spring中读取不同目录下的配置文件,以及使用`ClassPathXmlApplicationContext`和`FileSystemXmlApplicationContext`这两种不同的上下文环境来加载它们。 首先,让我们了解`...
为了保护这些敏感信息不被非法访问或篡改,我们可以对Spring配置文件进行加密处理。本文将深入探讨如何在Java环境中,利用TE网络技术实现Spring配置文件的加密。 首先,我们需要理解Spring配置文件的基本结构。...
总结起来,Spring提供了多种方式读取JAR内配置文件,包括`@PropertySource`、`@ConfigurationProperties`以及直接使用`Resource`接口。理解这些方法的使用和它们之间的差异对于开发和维护复杂的Spring应用至关重要。...
在Spring Boot应用中,多模块配置文件的读取是一个重要的实践,它有助于提高代码的可维护性和模块化。本文将详细探讨如何在Spring Boot的多模块项目中管理和使用不同的配置文件,以实现低耦合的设计。 首先,了解...
工具方面,IDEA提供了强大的Spring配置文件支持,可以自动完成、错误检查和代码导航。此外,`spring-context-indexer`库可以帮助提升IDE的代码感知能力,使其能更好地理解非XML配置。 在开发过程中,我们经常使用`...
本文将深入探讨Spring如何通过读取配置文件实现依赖注入,并讲解相关源码,帮助理解其工作原理。 在Spring中,配置文件通常为XML格式,如`applicationContext.xml`,它定义了bean的实例化、属性设置、装配关系等。...
通过Spring配置读取资源** 另外,你还可以将资源路径作为bean的属性来配置,Spring会自动将其转换为`Resource`对象。例如: ```xml <!-- 可以直接将一个文件路径赋值给Resource类型的resource属性,spring会根据...
在本压缩包中,我们找到了一系列与Spring相关的配置文件,这些文件在构建JavaWeb应用时起着至关重要的作用。 1. `jdbc.properties`: 这个文件通常用于存储数据库连接的相关信息,如URL、用户名、密码等。它是Spring...
本篇文章将深入探讨Spring配置文件中的归类,主要包括IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)两个重要概念。 ### 1. IOC (控制反转) IOC是Spring的核心特性,...
本篇文章将详细介绍Spring Boot如何读取配置文件,以及提供一些调试示例代码,帮助你更好地理解和运用。 ### 1. 配置文件位置与优先级 Spring Boot支持多种类型的配置文件,包括`application.properties`和`...
在IT领域,特别是软件开发过程中,配置文件的管理与读取是极其...在实际应用中,应根据具体需求选择合适的封装策略,如考虑使用更高级的配置管理库(如Spring的`@Value`注解),进一步优化配置文件的读取和管理流程。
接下来,一旦检测到Spring配置文件发生变化,我们需要重新加载配置文件。这可以通过Spring的`ApplicationContext`的`refresh()`方法来实现。`refresh()`会重新初始化Bean工厂,读取新的配置信息,并更新所有Bean的...
本压缩包包含两个工具类,分别用于读取`.yml`和`.properties`格式的配置文件,这两种格式都是Java开发中常见的配置文件类型。 首先,我们来看`.properties`配置文件。这种格式的文件历史较为悠久,它的语法简单,每...
如果你的项目使用了Spring框架,可以利用Spring的`Resource`接口来读取配置文件,它支持从类路径、文件系统、URL等多种来源加载资源: ```java Resource resource = new ClassPathResource("config.properties");...
在Spring MVC项目中,加载jar包中的Spring配置文件是一个常见的需求,特别是在进行SSM(Spring、Spring MVC、MyBatis)整合时。SSM框架的整合通常涉及到多个配置文件的组织和管理,其中一部分配置可能会被打包到独立...
在Spring Boot项目中,配置文件通常使用YAML(YAML Ain't Markup Language)格式,因为其简洁易读的特性。本文将深入讲解如何在Idea中读取YML配置文件,特别是针对刚接触Gradle的开发者。 首先,我们需要了解YML...
在实际开发中,根据项目需求,还可以考虑使用Spring框架的`@ConfigurationProperties`注解来绑定配置文件,实现更强大的类型安全和属性映射功能。不过,对于简单的配置管理,枚举单例模式已经足够实用。
在Spring框架中,读取`properties`配置文件是常见的任务,用于管理应用程序的配置信息,如数据库连接字符串、服务端口、系统环境变量等。本文将深入探讨如何在Spring项目中实现这一功能。 首先,我们需要一个`...
此工具自动生成非注解时Spring整合MyBatis时需要的一些配置文件,对于使用较新版本的spring,可以忽视生成的dao的配置文件,建议采用spring的扫描方式。生成的GeneratorConfigXML修改jdbc驱动位置后可直接用使用...