Java實現(xiàn)普通類注入service對象
普通類注入service對象
找了很多辦法,無論是加@Component還是編寫工具類實現(xiàn)ApplicationContextAware,始終為null。
最后使用這兩行代碼解決:
WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); DailySurveyService service = (DailySurveyService) context.getBean("dailySurveyService");
spring的普通類如何注入service、dao
在spring管理的web項目里,譬如Struts和spring的項目,配置好后,Struts里就可以直接使用定義好的service。
但是如果要在普通的工具類里,使用service或dao,就會報空指針,因為這個普通的Java類并不在spring管理下,不能使用spring注入的service。
下面講一個方法,讓普通工具類也能使用service。
定義一個類 SpringTool
/** * 通過該類即可在普通工具類里獲取spring管理的bean * @author wolf * */ public final class SpringTool implements ApplicationContextAware { private static ApplicationContext applicationContext = null; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if (SpringTool.applicationContext == null) { SpringTool.applicationContext = applicationContext; System.out.println( "========ApplicationContext配置成功,在普通類可以通過調(diào)用ToolSpring.getAppContext()獲取applicationContext對象,applicationContext=" + applicationContext + "========"); } } public static ApplicationContext getApplicationContext() { return applicationContext; } public static Object getBean(String name) { return getApplicationContext().getBean(name); } }
然后將這個類,加入到spring的配置文件里
<bean class="app.util.spring.SpringTool"/>
然后就可以了,就可以在任何一個普通的工具類里,根據(jù)spring里配置好的bean的id,
得到這個注入好的對象了
import app.util.spring.SpringTool; public class Test { public void print() { ArticleService articleService = (ArticleService) SpringTool.getBean("articleService"); Article article = articleService.queryById(756); System.out.println(article.getTitle()); } }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot GET和POST請求參數(shù)獲取方式小結(jié)
Spring Boot GET和POST請求參數(shù)獲取是開發(fā)人員經(jīng)常需要解決的問題,本文主要介紹了Springboot GET和POST請求參數(shù)獲取方式小結(jié),具有一定的參考價值,感興趣的可以了解一下2023-09-09Springboot全局異常捕獲及try catch區(qū)別解析
這篇文章主要介紹了Springboot全局異常捕獲及try catch區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06spring整合redis緩存并以注解(@Cacheable、@CachePut、@CacheEvict)形式使用
本篇文章主要介紹了spring整合redis緩存并以注解(@Cacheable、@CachePut、@CacheEvict)形式使用,具有一定的參考價值,有興趣的可以了解一下。2017-04-04關(guān)于SpringBoot中的XA事務(wù)詳解
這篇文章主要介紹了關(guān)于SpringBoot中的XA事務(wù)詳解,事務(wù)管理可以確保數(shù)據(jù)的一致性和完整性,同時也可以避免數(shù)據(jù)丟失和沖突等問題。在分布式環(huán)境中,XA?事務(wù)是一種常用的事務(wù)管理方式,需要的朋友可以參考下2023-07-07Java中的String對象數(shù)據(jù)類型全面解析
首先String不屬于8種基本數(shù)據(jù)類型,String是一個對象,因為對象的默認(rèn)值是null,所以String的默認(rèn)值也是null;但它又是一種特殊的對象,有其它對象沒有的一些特性2012-11-11Spring Boot Admin 進(jìn)行項目監(jiān)控管理的方法
Spring Boot Admin是一個開源社區(qū)項目,用于管理和監(jiān)控SpringBoot應(yīng)用程序。 這篇文章主要介紹了 Spring Boot Admin 進(jìn)行項目監(jiān)控管理的方法,需要的朋友可以參考下2020-07-07