轉:如何取得Spring管理的bean

來源:互聯網
上載者:User

標籤:ace   tar   ati   bean   href   web   管理   如何   tle   

原文連結:http://blog.csdn.net/a9529lty/article/details/42145545

1、servlet方式載入時,
【web.xml】

Xml代碼
  1. <servlet>  
  2. <servlet-name>springMVC</servlet-name>  
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  4. <init-param>  
  5. <param-name>contExtConfigLocation</param-name>  
  6. <param-value>classpath*:/springMVC.xml</param-value>  
  7. </init-param>  
  8. <load-on-startup>1</load-on-startup>  
  9. </servlet>  

 spring容器放在ServletContext中的key是org.springframework.web.servlet.FrameworkServlet.CONTEXT.springMVC
注意後面的springMVC,是你的servlet-name配置的值,注意適時修改。

Java代碼
  1. ServletContext sc=略  
  2. WebApplicationContext attr = (WebApplicationContext)sc.getAttribute("org.springframework.web.servlet.FrameworkServlet.CONTEXT.springMVC");  

 

2、listener方式載入時:
【web.xml】

Xml代碼
  1. <context-param>  
  2.   <param-name>contextConfigLocation</param-name>  
  3.   <param-value>/WEB-INF/applicationContext</param-value>  
  4. </context-param>  
  5.   
  6. <listener>  
  7.   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  8. </listener>  

 【jsp/servlet】可以這樣取得

Java代碼
  1. ServletContext context = getServletContext();  
  2. WebApplicationContext applicationContext  = WebApplicationContextUtils .getWebApplicationContext(context);   

 

3、通用的方法來了,神器啊,前的  1、2兩種方法並不通用,可以拋棄了。
在設定檔中加入:

Xml代碼
  1. <!-- 用於持有ApplicationContext,可以使用SpringContextHolder.getBean(‘xxxx‘)的靜態方法得到spring bean對象 -->  
  2. <bean class="com.xxxxx.SpringContextHolder" lazy-init="false" />  

 

Java代碼
    1. import org.springframework.context.ApplicationContext;  
    2. import org.springframework.context.ApplicationContextAware;  
    3. /** 
    4.  * 以靜態變數儲存Spring ApplicationContext, 可在任何代碼任何地方任何時候中取出ApplicaitonContext. 
    5.  *  
    6.  */  
    7. public class SpringContextHolder implements ApplicationContextAware {  
    8. private static ApplicationContext applicationContext;  
    9.   
    10. /** 
    11. * 實現ApplicationContextAware介面的context注入函數, 將其存入靜態變數. 
    12. */  
    13. public void setApplicationContext(ApplicationContext applicationContext) {  
    14. SpringContextHolder.applicationContext = applicationContext; // NOSONAR  
    15. }  
    16.   
    17. /** 
    18. * 取得儲存在靜態變數中的ApplicationContext. 
    19. */  
    20. public static ApplicationContext getApplicationContext() {  
    21. checkApplicationContext();  
    22. return applicationContext;  
    23. }  
    24.   
    25. /** 
    26. * 從靜態變數ApplicationContext中取得Bean, 自動轉型為所賦值對象的類型. 
    27. */  
    28. @SuppressWarnings("unchecked")  
    29. public static <T> T getBean(String name) {  
    30. checkApplicationContext();  
    31. return (T) applicationContext.getBean(name);  
    32. }  
    33.   
    34. /** 
    35. * 從靜態變數ApplicationContext中取得Bean, 自動轉型為所賦值對象的類型. 
    36. */  
    37. @SuppressWarnings("unchecked")  
    38. public static <T> T getBean(Class<T> clazz) {  
    39. checkApplicationContext();  
    40. return (T) applicationContext.getBeansOfType(clazz);  
    41. }  
    42.   
    43. /** 
    44. * 清除applicationContext靜態變數. 
    45. */  
    46. public static void cleanApplicationContext() {  
    47. applicationContext = null;  
    48. }  
    49.   
    50. private static void checkApplicationContext() {  
    51. if (applicationContext == null) {  
    52. throw new IllegalStateException("applicaitonContext未注入,請在applicationContext.xml中定義SpringContextHolder");  
    53. }  
    54. }  
    55. }  

轉:如何取得Spring管理的bean

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.