Resource Liste Lazy Autowired Spring Context

Harald123

Mitglied
Ich versuche eine Liste von Resourcen mit Lazy zu autowiren. Dabei wird eine leere Liste autowired.
Mit dem gleichen Mechanismus wird eine Liste von String korrekt autowired und befüllt. Hier der Code dazu.
Gibt es einen Grund weswegen die Resource Liste nicht befült wird? Ich habe es auch mit ArrayList probiert, aber erfolglos. Vielen Dank

[CODE lang="java" title="Klasse A"]
@Component
public class A{

@Lazy
@Bean
public List<String> stringtest()
{
final List<String> l = Arrays.asList(new String[] { "a", "b" });
return l;
}

@Lazy
@Bean
public List<Resource> resourceslistinspringcontext()
{
final List<Resource> resourceListe = new ArrayList<>();
final List<String> liste = Arrays.asList(new String[] { "a", "b" });

for (final String pfad : liste)
{
resourceListe.add(new FileSystemResourceLoader().getResource(pfad.toString()));
}

return resourceListe;
}


}
[/CODE]

[CODE lang="java" title="Klasse B"]


@Component
public class B{

// befüllt
@Lazy
@Autowired
List<String> liste;

// leer
@Lazy
@Autowired
ArrayList<Resource> resourceListe;

}
[/CODE]
 

httpdigest

Top Contributor
Wenn du Configuration-Klassen hast, die @Bean Factorymethoden definieren, dann brauchst du die @Configuration Spring Annotation und nicht @Component. @Component bedeutet, dass diese Klasse selbst als Bean instanziiert wird. Das ist bei deiner Klasse "A" nicht der Fall. Das ist eine @Configuration-Klasse.
Und "ArrayList" als Typ des Injection Points von `resourceListe` ist, denke ich, zu spezifisch.
 

Harald123

Mitglied
verstehe. in unserem Kontext sind es @Component Klassen und das kann ich nicht ändern. Ich frage mich wie es dann mit einer Liste von Strings funktioniert. Sollte es da nicht auch gleich sein? Muss mir dann was anderes überlegen, falls das so nicht geht.
 

Neue Themen


Oben