ich muss Spring als IoC für meine JSF WebApplikation verwenden und versucht Spring über xml zu konfigurieren.
Ich habe ein IQuestionDao interface und die dazugehörige Implementierung QuestionDao. Das IQuestionDao und QuestionDao befinden sich in einem anderen Projekt wie die WebApplikation.
@ViewScoped
public class QuestionBean implements Serializable {
IQuestionService _IQuestionService;
/**
* Creates a new instance of QuestionBean
*/
public QuestionBean() {
}
@PostConstruct
public void init() {
Object bla = getQuestionDao();
//bla ist NULL
System.out.print("yoyoyo");
}
private IQuestionDao QuestionDao;
/**
* Get the value of QuestionDao
*
* @return the value of QuestionDao
*/
public IQuestionDao getQuestionDao() {
return QuestionDao;
} ...
Jedoch ist QuestionDao immer NULL. Was habe ich falsch gemacht? Wie macht man dann in weitere Folge eine Konstruktor Injection? Eigentlich möchte ich ja das Interface IQuestionService in den Bean injezierbar machen.
Ich weiß nur, dass Spring anfangs sehr schwierig in Verbindung mit JSF war. Zudem sind spätestens mit JSF 2.3 die alten ManagedBean-Annotation deprecated.
Danke Sym für den Tipp. An der Spring Vorgabe komme ich aber leider nicht drum herum. Die Annotation brauch ich nicht, wenn ich es über die XML Konfiguration mache (wenn ich es richtig verstanden habe).
Ich habe noch zwei Fehler gefunden, die ich mit dem letzten Commit ausgebessert habe. Nun startet der GF ohne Fehlermeldung. Das IQuestionDao bleibt aber weiterhin leer.
Ich möchte, dass er in den QuestionBean bei der Property vom Interface IQuestionDao eine QuestionDao instanz injeziert.
Jedoch sagt GF:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘QuestionBean’ defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type ‘java.lang.String’ to required type ‘code.elephant.contract.dao.IQuestionDao’ for property ‘QuestionDao’; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [code.elephant.contract.dao.IQuestionDao] for property ‘QuestionDao’: no matching editors or conversion strategy found