最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA解決在@autowired,@Resource注入為null的情況

 更新時(shí)間:2020年10月09日 15:16:07   作者:Gogym  
這篇文章主要介紹了JAVA解決在@autowired,@Resource注入為null的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

使用SpringMVC或者SSH過(guò)程中,有時(shí)可能會(huì)遇到這么一個(gè)問(wèn)題。就是在一個(gè)普通的JAVA類(lèi)(不是controller也不是action類(lèi))中無(wú)法注入在spring配置文件中配置的bean。

比如你在一個(gè)普通java類(lèi)想調(diào)用某個(gè)在spring中配置的service,你會(huì)發(fā)現(xiàn)不管你用@Resource還是@Autowired注解都無(wú)法注入,對(duì)象始終是null。

那是因?yàn)橐话闫胀ǖ腏ava類(lèi)沒(méi)有被spring代理,自然無(wú)法通過(guò)spring注入相關(guān)的對(duì)象。難道這樣就不能調(diào)用了嗎?這里提供下面一個(gè)類(lèi)來(lái)解決這個(gè)問(wèn)題:

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;
 
/**
 * 這個(gè)類(lèi)是為了解決在普通類(lèi)調(diào)用service的問(wèn)題
 * 
 * @ClassName SpringContextUtil
 * @Description
 * @author kokjuis 189155278@qq.com
 * @date 2016-6-12
 * @content
 *  
 */
public class SpringContextUtil implements ApplicationContextAware {
	private static ApplicationContext applicationContext; // Spring應(yīng)用上下文
 
	// 下面的這個(gè)方法上加了@Override注解,原因是繼承ApplicationContextAware接口是必須實(shí)現(xiàn)的方法
	@Override
	public 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配置文件中配置一下這個(gè)類(lèi):

<?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工具類(lèi) -->
 <bean id="SpringContextUtil" class="com.im.utils.SpringContextUtil"
 scope="singleton"></bean>
 
</beans>

然后通過(guò)這個(gè)類(lèi)提供的方法就能正常的獲取在spring中托管的bean了,使用很簡(jiǎn)單:

/**
  * 獲取spring托管的redis連接池
  */
private JedisPool jedisPool = (JedisPool) SpringContextUtil.getBean("jedisPool");

補(bǔ)充知識(shí):解決Spring中為靜態(tài)static的@Resource自動(dòng)注入失敗的問(wèn)題

在寫(xiě)一個(gè)單例模塊時(shí),在初始化對(duì)象時(shí)需要注入靜態(tài)的參數(shù),導(dǎo)致spring 暴出

@Resource annotation is not supported on static fields

可以通過(guò)將@Resource寫(xiě)在set方法上,并去除static

以上這篇JAVA解決在@autowired,@Resource注入為null的情況就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java.lang.annotation包詳細(xì)介紹

    java.lang.annotation包詳細(xì)介紹

    java.lang.annotation?包是 Java 標(biāo)準(zhǔn)庫(kù)中的一個(gè)核心包,專(zhuān)門(mén)用于定義和支持 Java 注解(Annotation),這篇文章主要介紹了java.lang.annotation包介紹,需要的朋友可以參考下
    2024-07-07
  • @CacheEvict 清除多個(gè)key的實(shí)現(xiàn)方式

    @CacheEvict 清除多個(gè)key的實(shí)現(xiàn)方式

    這篇文章主要介紹了@CacheEvict 清除多個(gè)key的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Java中ArrayList和LinkedList之間的區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java中ArrayList和LinkedList之間的區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了Java中ArrayList和LinkedList之間的區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • jdk1.8中的for循環(huán)問(wèn)題記錄

    jdk1.8中的for循環(huán)問(wèn)題記錄

    這篇文章主要介紹了jdk1.8中的for循環(huán)及jdk1.8 新特性之 forEach 循環(huán)遍歷問(wèn)題,本文通過(guò)實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2022-11-11
  • SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源的實(shí)戰(zhàn)案例

    SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源的實(shí)戰(zhàn)案例

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源的實(shí)戰(zhàn)案例,文中通過(guò)示例代碼和圖文展示介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2024-01-01
  • 詳解Mybatis核心類(lèi)SqlSessionFactory的構(gòu)建

    詳解Mybatis核心類(lèi)SqlSessionFactory的構(gòu)建

    這篇文章主要為大家詳細(xì)介紹了Mybatis核心類(lèi)SqlSessionFactory的構(gòu)建過(guò)程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • 解決IDEA報(bào)錯(cuò)Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded

    解決IDEA報(bào)錯(cuò)Caused by: org.springframework.boot.web.se

    遇到IDEA啟動(dòng)報(bào)錯(cuò),可嘗試以下方法:打開(kāi)項(xiàng)目設(shè)置(Ctrl+Shift+Alt+S),將JDK版本修改為1.8;或者檢查T(mén)omCat依賴(lài),若有問(wèn)題可嘗試刪除,此外,確保每次拉取項(xiàng)目后,maven地址設(shè)置為本地,并且JDK版本設(shè)置為1.8,以上為個(gè)人解決經(jīng)驗(yàn),希望對(duì)大家有所幫助
    2024-09-09
  • Java Files和Paths的使用demo詳解

    Java Files和Paths的使用demo詳解

    Java Files和Paths是Java 7中引入的新API,用于處理文件和目錄,F(xiàn)iles類(lèi)提供了許多有用的靜態(tài)方法來(lái)操作文件和目錄,而Path類(lèi)則表示文件系統(tǒng)中的路徑,這篇文章主要介紹了Java Files和Paths的使用詳解,需要的朋友可以參考下
    2023-03-03
  • JavaSE面試題之this與super關(guān)鍵字的區(qū)別詳解

    JavaSE面試題之this與super關(guān)鍵字的區(qū)別詳解

    this關(guān)鍵字用于引用當(dāng)前對(duì)象的引用,super關(guān)鍵字用于引用父類(lèi)對(duì)象的引用,下面這篇文章主要給大家介紹了關(guān)于JavaSE面試題之this與super關(guān)鍵字區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • Java實(shí)現(xiàn)導(dǎo)入csv的示例代碼

    Java實(shí)現(xiàn)導(dǎo)入csv的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)導(dǎo)入csv的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03

最新評(píng)論

兴化市| 正镶白旗| 江门市| 临沂市| 东乌| 息烽县| 务川| 东平县| 海晏县| 焉耆| 台北市| 德令哈市| 新晃| 泗洪县| 衢州市| 建昌县| 永川市| 互助| 甘肃省| 平远县| 额敏县| 阆中市| 沁源县| 界首市| 资中县| 龙海市| 商城县| 新化县| 双牌县| 定远县| 凌海市| 林芝县| 南通市| 金秀| 那坡县| 土默特左旗| 安徽省| 巨野县| 南澳县| 安图县| 屏山县|