Java獲取Spring的各種物件

shenzhennba發表於2019-01-14

一,獲取普通使用者開發型別的Bean,例如Service,Dao等
一般Spring專案中在專案執行起來時都把各個想要的bean例項注入到Spring的IOC容器中,但是有些時候我們想在Spring之外的地方,例如在Filter,Intercept等地方想獲取並使用Spring容器中的某些功能bean,尤其是service型別的bean,可以使用Spring提供的一下方法,步驟如下:
1,首先得到對應的工廠類的例項

import org.springframework.web.context.support.WebApplicationContextUtils;

final BeanFactory bf = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());

2,利用工廠類例項獲取指定某類class的工作類(如service)bean例項,然後使用工作類bean;

final XService xService = bf.getBean(XServiceImpl.class);

也即Java直接從Spring獲取工廠型別的Bean例項,再從工廠型別Bean例項獲取指定類型別的service然後使用某功能的service:


二,獲取常用的請求物件和返回物件;
請求物件和返回物件是我們常用的物件,有時想在Spring之外的地方,獲取這兩個物件,相應物件的上下文也提供了相應的方法,例如:

import org.springframework.web.context.request.RequestContextHolder;

//獲取請求物件
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();

//獲取返回物件
HttpServletResponse response = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRespon



 

相關文章