介绍
这篇文章将为大家详细讲解有关JAVA如何解决在@ autowired, @注入为零的情况,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
使用SpringMVC或者SSH过程中,有时可能会遇到这么一个问题。就是在一个普通的JAVA类(不是控制器也不是动作类)中无法注入在春天配置文件中配置的bean。
比如你在一个普通JAVA类想调用某个在春天中配置的服务,你会发现不管你用@还是@ autowired注解都无法注入,对象始终是null。
那是因为一般普通的JAVA类没有被春天代理,自然无法通过春天注入相关的对象。难道这样就不能调用了吗?这里提供下面一个类来解决这个问题:
<强> SpringContextUtil 强>
包com.im.utils; 进口org.springframework.beans.BeansException; 进口org.springframework.beans.factory.NoSuchBeanDefinitionException; 进口org.springframework.context.ApplicationContext; 进口org.springframework.context.ApplicationContextAware;/* * *这个类是为了解决在普通类调用服务的问题 * * @ClassName SpringContextUtil * @Description * @author kokjuis 189155278 @qq.com * @date 2016-6-12 * @content * */公共类SpringContextUtil实现ApplicationContextAware { 私有静态ApplicationContext ApplicationContext;//弹簧应用上下文//下面的这个方法上加了@Override注解,原因是继承ApplicationContextAware接口是必须实现的方法 @Override 公共空间setApplicationContext (ApplicationContext ApplicationContext) 抛出BeansException { SpringContextUtil。applicationContext=applicationContext; } 公共静态ApplicationContext getApplicationContext () { 返回applicationContext; } 公共静态对象getBean(字符串名称)抛出BeansException { 返回applicationContext.getBean(名称); } 公共静态对象getBean(字符串名称、类requiredType) 抛出BeansException { applicationContext返回。getBean(名称、requiredType); } 公共静态布尔containsBean(字符串名称){ 返回applicationContext.containsBean(名称); } 公共静态布尔isSingleton(字符串名称) 抛出NoSuchBeanDefinitionException { 返回applicationContext.isSingleton(名称); } 公共静态类方法(字符串名称) 抛出NoSuchBeanDefinitionException { 返回applicationContext.getType(名称); } 公共静态String [] getAliases(字符串名称) 抛出NoSuchBeanDefinitionException { 返回applicationContext.getAliases(名称); } }
<>强然后在春天配置文件中配置一下这个类:强>
& lt;及# 63;xml version=?.0”;编码=癠TF-8", # 63;比; http://www.springframework.org/schema/beans" & lt;豆类xmlns=? xmlns: xsi=癶ttp://www.w3.org/2001/XMLSchema-instance"xmlns: tx=癶ttp://www.springframework.org/schema/tx" xmlns: aop=癶ttp://www.springframework.org/schema/aop"xmlns:任务=癶ttp://www.springframework.org/schema/task" xmlns:缓存=癶ttp://www.springframework.org/schema/cache" xsi: schemaLocation=? http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.3.xsd ,http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd"的在 & lt; !——配置弹簧工具类——比; & lt; bean id=癝pringContextUtil"类=癱om.im.utils.SpringContextUtil" 范围=皊ingleton"祝辞& lt;/bean> & lt;/beans>
然后通过这个类提供的方法就能正常的获取在春天中托管的豆了,使用很简单:
/* * *获取弹簧托管的复述,连接池 */私人JedisPool JedisPool=(JedisPool) SpringContextUtil.getBean (“jedisPool");
<强>解决春天中为静态静态的@自动注入失败的问题强>
在写一个单例模块时,在初始化对象时需要注入静态的参数,导致春天暴出
不支持@ resource注解>关于JAVA如何解决在@ autowired, @注入为零的情况就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。
JAVA如何解决在@ autowired, @注入为零的情况