普通java類加入spring容器的四種方式


今天在自己開發的工具類中使用了spring注入的方式調用了其他類,但是發生的報錯,在整理了后今天小結一下。

首先簡單介紹下spring容器,spring容器是整個spring框架的核心,通常我們說的spring容器就是bean工廠,bean工廠負責創建和初始化bean、裝配bean並且管理應用程序中的bean.spring中提供了兩個核心接口:BeanFactory和ApplicationContext,ApplicationContext是BeanFactory子接口,它提供了比BeanFactory更完善的功能。

從上面可以看出所有依賴注入的類都必須要加入到spring容器中,由spring容器幫我們做類的事例化,管理我們的類,下面我們簡單介紹下加入spring容器的四種方式(spring內置注解如@Controller、@Service這種就不講解了)。

 

1、在項目啟動時,通過@bean的方式將普通類事例化到spring容器中,如下

 

2、通過@component注解把普通pojo實例化到spring容器中,如下

 

 

3、通過實現ApplicationContextAwarej加載上下文的方式實現,如下

   ①實現ApplicationContextAware接口:

package cn.bravolinks.erp.prm_website.utils;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class SpringBeanFactoryUtils implements ApplicationContextAware {
private static ApplicationContext appCtx;
/**
* 此方法可以把ApplicationContext對象inject到當前類中作為一個靜態成員變量。
* @param applicationContext ApplicationContext 對象.
* @throws BeansException
*/
@Override
public void setApplicationContext( ApplicationContext applicationContext ) throws BeansException {
appCtx = applicationContext;
}

/**
* 獲取ApplicationContext
* @return
*/
public static ApplicationContext getApplicationContext(){
return appCtx;
}

/**
* 快速得到一個BEAN
* @param beanName bean的名字
* @return 返回一個bean對象
*/
public static Object getBean( String beanName ) {
return appCtx.getBean( beanName );
}
/**
* 快速得到一個BEAN
* @param clazz bean的類型
* @return
*/
public static <T> T getBean(Class<T> clazz){
return appCtx.getBean(clazz);
}
}

  ②spring容器創建實例

RestWorkFlowService restWorkFlowService = SpringBeanFactoryUtils.getBean(RestWorkFlowService.class);

 

4、通過spring配置文件中的<bean id="" class=""/>實現,如下

<bean id="springContextHelper" class="com.bis.majian.practice.module.spring.util.SpringContextHelper">


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM