Spring普通類/工具類獲取並調用Spring service對象的方法

參考《Spring普通類獲取並調用Spring service方法》,網址:https://blog.csdn.net/jiayi_0803/article/details/68924558spring

Spring MVC中,Controller中使用service只需使用註解@Resource/@Autowired就行,可是通常類(即不使用@Controller註解的類)要用到service時,Spring中的Service經過new實例化的對象脫離了Spring容器的管理,獲取不到註解的屬性值,因此會是null,就算調用service的類中有@Component註解加入了Spring容器管理,也仍是null.
---------------------
1、建立獲取Spring的工具類SpringUtilapp


import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;ide


//建立獲取Spring的工具類,用於Spring普通類或工具類獲取並調用Spring service對象
public class SpringUtil implements ApplicationContextAware{
  private static ApplicationContext appCtx;
  @Override
  public void setApplicationContext(ApplicationContext applicationContext)
  throws BeansException {
    appCtx = applicationContext;
  }
  public static ApplicationContext getApplicationContext() {
    return appCtx;
  }
  public static Object getBean(String beanName) {
    return appCtx.getBean(beanName);
  }
} 工具


2、經過用@Service("xxService")service層聲明servicespa

@Service("xxService")
public interface xxService {.net

}xml

注意不是impl實現類對象

3、經過@Resource在普通類或工具類中獲取對象並調用serviceblog

@Resource
private xxService xxService;// Service接口
//SpringUtil.getBean("xxService")的形式獲取並調用service
xxService = (xxService) SpringUtil.getBean("xxService");接口


4、在applicationContext.xml 中聲明該Spring工具類

  <!-- Spring工具類 -->  <bean id = "springUtil"  name="springUtil" class="com.xx.util.SpringUtil"/>

相關文章
相關標籤/搜索