无法在spring中将bean注入具有特定名称的JSF托管bean

无法在spring中将bean注入具有特定名称的JSF托管bean,spring,jsf,javabeans,code-injection,managed,Spring,Jsf,Javabeans,Code Injection,Managed,在下面的代码段中,当我给@ManagedBean指定一个特定的名称时,不会注入userService和authenticationService。但是如果我只使用@ManagedBean而不使用名称,那么注入就可以正常工作。有什么想法吗 @Component @ManagedBean(name="user") // the injection doesn't work //@ManagedBean // the injection works @SessionScoped public clas

在下面的代码段中,当我给@ManagedBean指定一个特定的名称时,不会注入userService和authenticationService。但是如果我只使用@ManagedBean而不使用名称,那么注入就可以正常工作。有什么想法吗

@Component
@ManagedBean(name="user") // the injection doesn't work
//@ManagedBean // the injection works
@SessionScoped
public class UserManagedBean implements Serializable {

    // Spring User Service is injected...
    @Autowired
    UserService userService;
    @Autowired
    private AuthenticationService authenticationService;

当您使用
@ManagedBean(name=“user”)
时,请尝试为组件指定相同的名称,并查看是否有效

@Component("user")

它像老板一样工作。谢谢。我希望我能投赞成票,但我没有足够的声誉。你能解释一下为什么吗?另一个问题是,我无法从其他具有ManagedProperty的托管bean访问该UserManagedBean。例如,ManagedProperty(value=“#{user}”)。它返回null。但它可以与@Autowired一起工作。有什么解释吗?不用担心投票,只要它有效。关于你的第一个问题。当您通过spring原型注释(如@Component)声明bean时,如果没有指定名称,spring将类名(第一个字符的小写)作为bean名称,在您的情况下,它将是userManagedBean。当您在@ManagedBean(name=“user”)中指定名称时,可能会混淆Spring。因此,如果您需要指定名称,请同时为@ManagedBean和Spring原型注释指定名称,并保持值不变。我不确定您的第二个问题,我需要更多的上下文来解决它。但由于您使用了Spring,所以在IOC中使用Spring方法总是很好的,包括bean声明和注入,例如使用@Autowired。