No SpringMVC, o Controlador pode usar diretamente a anotação @Resource para chamar a camada de lógica de negócios do Serviço, mas o que deve ser feito quando classes comuns ou classes de ferramentas precisam chamar a interface de Serviço?
Em seguida, forneça duas soluções
1. Recarregue o arquivo de configuração Spring para instanciar o bean de contexto
ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext-common.xml");
StudentService studentService = (StudentService)appContext.getBean("studentService");
Use ClassPathXmlApplicationContext como o ponto de entrada para carregar o arquivo de configuração do Spring em CLASSPATH, concluir o carregamento de todas as instâncias do Bean e obter as instâncias do Bean.
2. Implementar a interface ApplicationContextAware (recomendado)
Por meio da interface ApplicationContextAware, o Bean instanciado pode ser obtido a partir do contexto Spring existente.
(1) Crie a classe de ferramenta SpringContextUtil para implementar a interface ApplicationContextAware
@Component
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext appCtx;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
appCtx = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return appCtx;
}
// 添加getBean()方法,凭id获取容器管理的Bean
public static Object getBean(String beanName) {
return appCtx.getBean(beanName);
}
}
(2) Injete a classe de ferramenta SpringContextUtil no contêiner Spring
<bean id="springContextUtil" class="com.cn.unit.spring.SpringContextUtil"/>
(3) Configure o Listener que carrega o contêiner Spring no projeto web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
(4) Então você pode felizmente colocar o feijão no recipiente de primavera
UserServiceImpl userService = (UserServiceImpl) SpringContextUtil.getBean("userService");
userService.insertUser(user);
Dê a alguém uma mão de rosa para deixar um perfume, se te ajudar, venha
点个赞
!