参考《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"/>