JAVA解决在@autowired,@Resource注入为null的问题
来源:互联网 发布:大连网络建站 编辑:程序博客网 时间:2024/05/22 02:02
使用SpringMVC或者SSH过程中,有时可能会遇到这么一个问题。就是在一个普通的JAVA类(不是controller也不是action类)中无法注入在spring配置文件中配置的bean。比如你在一个普通java类想调用某个在spring中配置的service,你会发现不管你用@Resource还是@Autowired注解都无法注入,对象始终是null。那是因为一般普通的Java类没有被spring代理,自然无法通过spring注入相关的对象。难道这样就不能调用了吗?这里提供下面一个类来解决这个问题:
SpringContextUtil
package com.im.utils;import org.springframework.beans.BeansException;import org.springframework.beans.factory.NoSuchBeanDefinitionException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;/** * 这个类是为了解决在普通类调用service的问题 * * @ClassName SpringContextUtil * @Description * @author kokjuis 189155278@qq.com * @date 2016-6-12 * @content * */public class SpringContextUtil implements ApplicationContextAware {private static ApplicationContext applicationContext; // Spring应用上下文// 下面的这个方法上加了@Override注解,原因是继承ApplicationContextAware接口是必须实现的方法@Overridepublic void setApplicationContext(ApplicationContext applicationContext)throws BeansException {SpringContextUtil.applicationContext = applicationContext;}public static ApplicationContext getApplicationContext() {return applicationContext;}public static Object getBean(String name) throws BeansException {return applicationContext.getBean(name);}public static Object getBean(String name, Class requiredType)throws BeansException {return applicationContext.getBean(name, requiredType);}public static boolean containsBean(String name) {return applicationContext.containsBean(name);}public static boolean isSingleton(String name)throws NoSuchBeanDefinitionException {return applicationContext.isSingleton(name);}public static Class getType(String name)throws NoSuchBeanDefinitionException {return applicationContext.getType(name);}public static String[] getAliases(String name)throws NoSuchBeanDefinitionException {return applicationContext.getAliases(name);}}
然后在spring配置文件中配置一下这个类:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:task="http://www.springframework.org/schema/task"xmlns:cache="http://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"><!--配置spring工具类 --><bean id="SpringContextUtil" class="com.im.utils.SpringContextUtil"scope="singleton"></bean></beans>
然后通过这个类提供的方法就能正常的获取在spring中托管的bean了,使用很简单:
/** * 获取spring托管的redis连接池 */ private JedisPool jedisPool = (JedisPool) SpringContextUtil.getBean("jedisPool");
阅读全文
0 0
- JAVA解决在@autowired,@Resource注入为null的问题
- spring 在Thread中注入@Resource@Autowired失败,总为null~解决
- 解决非controller使用@Autowired注解注入为null问题
- Spring @Autowired注解在非Controller中注入为null
- spring 在Thread中注入@Resource失败,总为null~解决
- Java Spring 多线程 @Autowired和@Resource注入问题
- @Resource自动注入为null
- JAVA温习:Spring的注解注入及区别 @Resource @Autowired
- Spring的@resource注入跟@autowired注入
- Spring在多线程下@Resource注入为null
- @Autowired注入request为null解决方法
- spring 在Thread中注入@Resource失败,总为null的解决方案
- Spring @Resource、@Autowired的注解注入
- @Resource @Autowired的注解注入及区别
- Spring的注解注入方式@Autowired,@Resource
- springboot拦截器@Autowired为null解决
- @Autowired在Controller中不为null,在某处为null的原因
- Spring使用@Resource、@Autowired注入时出现空指针问题的原因
- 面对对象
- NYoj 156 Hangover
- Android O体验系列(二)自定义字体
- 图解 javascript this 指向什么?
- 后台运行长时间php进程 数据库连接不上的问题
- JAVA解决在@autowired,@Resource注入为null的问题
- [Mysql] 添加外键失败:Cannot add or update a child row:a foreign key constraint fails
- caffe编译matlab接口的问题解决。
- Winform 程序运行路径
- Android 不透明度 对应表
- EJB+JPA演示实体类基本操作CRUD的实现
- SDUT第一届ACM知识挑战赛Fire Emblem [You Will Win
- 软编码Flv 到Mp4 容器(十三) fmp4 生成ftyp和moov所必要的 flv数据
- 【LeetCode】Valid Parentheses 解题报告