JAVA如何解决在@ autowired, @注入为零的情况

  介绍

这篇文章将为大家详细讲解有关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, @注入为零的情况