參考《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層聲明service類spa
@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"/>