我无法使用@Autowired 注入(inject)服务。
AplicationContext.xml
<context:component-scan base-package="com.mypackage" />
<context:component-scan base-package="com.mypackage.bean" />
<context:component-scan base-package="com.mypackage.dao" />
<context:component-scan base-package="com.mypackage.service" />
<context:component-scan base-package="com.mypackage.filters" />
<context:annotation-config />
faces-config.xml
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver></application>
web.xml
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
服务声明:
@Service
public class UsuarioServiceImpl extends GenericServiceImpl implements UsuarioService{...}
托管Bean:
@ManagedBean(name="cadastroUsuarioMB")
@SessionScoped
public class CadastroUsuarioBean {
@Autowired
UsuarioService usuarioService;
private Usuario usuario = new Usuario();
public String salvar() {
//Error !!! usuarioService is null !
usuarioService.retornaUsuarioPorLogin(usuario.getEmail(), usuario.getSenha());
JsfUtil.addSuccessMessage(null, usuario.getCelular());
return "";
}
}
最佳答案
该错误是因为 UsuarioService 是 spring 上下文托管 bean,而 @ManagedBean 是 jsf 托管 bean。任何一个 1)用@Component替换@ManagedBean以使@Autowire注入(inject)服务或 2)
@ManagedProperty(value="#{usuarioService}")
private UsuarioService usuarioService ; // mutators for this.
}
关于java - @Autowired JSF 2 Spring 3 空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22610652/