@ Autowired-Dienst in einer @ManagedBean @Component-Klasse ist während der JSF-Anforderung null. [Duplicate]

Diese Frage hat hier bereits eine Antwort:

Spring JSF-Integration: Wie wird eine Spring-Komponente / ein Spring-Service in eine JSF-verwaltete Bean eingefügt? 3 answers

Ich habe Union Spring 3 (MVC) mit JSF 2 ausprobiert. Ich habe einige Erfahrungen mit Spring und JSF, habe aber noch nie versucht, mich ihnen anzuschließen. Am Ende habe ich 2 Dateien

@ManagedBean(name = "userBean")
@Scope
@Component
public class someBean {

  @Autowired
  private TestService testService;

  public void printString() {
    System.out.println(testService.getString());
  }
}

un

@ManagedBean(name = "studentBean")
@Scope
@Component
public class StudentBean {

  @Autowired
  private TestService testService;

  public void printString() {
    System.out.println(testService.getString());
  }
}

Für diese Datei habe ich die richtige Konfiguration für spring, jsf und web.xml. Und habe eine .xhtml-Seite, auf der ich printString () für 'someBean' und für 'StudentBean' starte. Ich habe die NPE im ersten Fall und "einige Zeichenfolge" in der Konsole im zweiten Fall. Der Grund ist einfach - verschiedene Bean-Namen im Spring-Kontext und in JSF. alle probleme beendet nach

@Component => @Component("userBean") 
public class someBean {

Im Debug habe ich gesehen, dass

private TestService testService;

@Autowired
public void setTestService(TestService testservice) {
  this.testService = testService;
}

Wenn die JSF-Bean testService-Sets erstellt, ist sie nicht null, sondern während des JSF-Lebenszyklus null, wenn

public void pringString() {
  testService.blah();
}

testService ist null. Das kann ich nicht verstehen. Hat jemand tiefes Wissen über den Spring und JSF, um diese Situation detailliert zu beschreiben?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage