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


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

Spring MVC中,Controller中使用service只需使用注解@Resource/@Autowired就行,但是一般類(即不使用@Controller注解的類)要用到service時,Spring中的Service通過new實例化的對象脫離了Spring容器的管理,獲取不到注解的屬性值,所以會是null,就算調用service的類中有@Component注解加入了Spring容器管理,也還是null.
---------------------
1、創建獲取Spring的工具類SpringUtil


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


//創建獲取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層聲明service

@Service("xxService")
public interface xxService {

}

注意不是impl實現類

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

@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"/>

 


免責聲明!

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



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