Hallo,
Üblicherweise (ich kenne allerdings nur Spring DI) kannst Du bei DI auf zwei verschiedene Arten Objekte injezieren:
- per Setter
- Konstruktor
In Deinem Fall wird "userid" über einen Setter injeziert...dieser wird natürlich erst NACH dem Konstruktor aufgerufen, folglich kannst Du IN dem Konstruktor nicht auf "userid" zugreifen (bzw. ist der Wert eben 0).
Bei Spring kann man selbst festlegen, ob Variablen über den Konstruktor injeziert werden oder über Setter - weiß nicht wie das bei normalen Beans geht.
In diesem Blog-Post wird Dein Problem beschrieben - dort wird in einem Kommentar vorgeschlagen, eine zusätzliche Init-Methode vorzusehen, die in Deinem Fall dann die DB-Abfrage machen würde, und diese mit einem @PostConstruct zu versehen - dann wird sie automatisch nach dem Konstruktor aufgerufen.
Viel Erfolg,
Jörg