Ich habe RestController Klasse, die Presenter ruft, um einige Daten zu erhalten.Frühling Autowired Service ist null
@RestController
@RequestMapping(value="notes/api")
public class NotesRestController {
private GetAllNotesPresenter getAllNotesPresenter;
@RequestMapping(value="/all")
public List<Note> getAll(){
getAllNotesPresenter = new GetAllNotesPresenterImpl();
return getAllNotesPresenter.getAll();
}
}
Innen Presenter-Klasse-I rufen Datasource (nicht Repository Spring, nur DAO-Klasse).
public class GetAllNotesPresenterImpl implements GetAllNotesPresenter {
private NotesDataSource dataSource;
private NotesRepository repository;
public GetAllNotesPresenterImpl(){
dataSource = new DatabaseDataSource();
repository = new NotesRepositoryImpl(dataSource);
}
@Override
public List<Note> getAll() {
return repository.getAll();
}
}
Das ist meine Repository-Klasse, es ist nicht Repository Frühling, es ist nur DAO-Klasse.
public class NotesRepositoryImpl implements NotesRepository {
private NotesDataSource dataSource;
public NotesRepositoryImpl(NotesDataSource dataSource){
this.dataSource = dataSource;
}
@Override
public List<Note> getAll() {
return dataSource.getAll();
}
}
Das ist mein Service-Klasse:
@Service
@Transactional
public class NotesServiceImpl implements NotesService {
@Autowired
private NotesJpaRepository repository;
@Override
public List<NoteJpa> getAll() {
return repository.findAll();
}
}
Innere Datasource-Klasse möchte ich @Autowire of Spring Dienst tun, aber ich Null-Zeiger-Ausnahme . Der Dienst ist immer null.
@Component
public class DatabaseDataSource implements NotesDataSource {
@Autowired
private NotesService notesService;
public DatabaseDataSource(){
}
@Override
public List<Note> getAll() {
return notesService.getAll();
}
}
Wenn der obige Code korrekt ist, denke ich, dass der 'NotesService' niemals konstruiert wird (und vorher eine Ausnahme auslöst), weil er ein' NotesJpaRepository' erwartet, das Sie entweder nicht erwähnen oder kein Bean ist. Wenn dies die Implementierung von 'NotesRepository' sein soll, muss es instanziiert und als eine Bean exponiert werden. – meistermeier
Haben Sie @ Service Annotation in "NotesService" -Schnittstelle? – VelNaga