Ich brauche nur kurze Erklärung eines Teils meiner Spring Web App, die ich nicht genau verstehe.Instantiierung Modell im Frühjahr Ruhe Controller
Ich habe eine einfache MVC Spring Web App mit StudentController
. Für Daten habe ich eine Klasse StudentDataModelStub
, die IStudentDataModel
Schnittstelle implementiert, die einige einfache Funktionen für die Arbeit mit Daten hat, die in der List
in StudentDataModelStub
Klasse gespeichert sind.
In StudentController
Klasse Ich habe
@Autowired private IStudentDataModel model;
Wenn ich @Autowired
Anmerkung lösche ich NullPointerException
erhalten, die zu erwarten ist, weil ich StudentDataModelStub
nicht instanziiert. Aber wie weiß der Frühling, welche Klasse zu instanziieren IStudentDataModel
mit, weil mehrere Klassen IStudentDataModel
Schnittstelle implementieren können, und warum model
muss @Autowired
sein?
Dies ist ein Teil der StudentDataModelStub
Klasse.
public class StudentDataModelStub implements IStudentDataModel {
private final Map<Integer, Student> data = new HashMap<>();
@Override
public List<Student> getStudents() {
// TODO Auto-generated method stub
return new ArrayList<>(data.values());
}
@Override
public Student getStudent(int id) throws IdNotFoundException {
// TODO Auto-generated method stub
if(!data.containsKey(id)){
throw new IdNotFoundException("...");
}
return data.get(id);
}
Können Sie den Code für 'StudentDataModelStub' hinzufügen? – developer