Mam klasę Kot oraz repozytorium KotDAO, w którym znajduje się lista obiektów typu Kot. Dlaczego w klasie Controller metoda firstDeleteKot nie działa a SecondDeletKot działa? W obu przypadkach pracujemy przecież na tej samej referencji. Czy wpływ na to mają użyte adnotacje? Dla standardowej aplikacji, w której klasa Kot oraz KotDAO( bez @Repository) są identyczne jak te pokazane niżej, dla obiektów dodanych do listy bezpośrednio w kodzie programu oba sposoby usuwania działają poprawnie.
public class Kot {
private String imie;
private String imieOpiekuna;
//Gettery i Settery
}
@Repository
public class KotDAO {
List<Kot> koty = new ArrayList<>();
public void dodajKota(Kot kot) {
koty.add(kot);
}
public void usunKota(int index){
koty.remove(index);
}
public List<Kot> getKoty() {
return koty;
}
}
@RestController
public class Controller {
@Autowired
KotDAO kotDAO;
@PostMapping("/koty")
public void addKota(@RequestBody Kot kot){
kotDAO.dodajKota(kot);
}
@GetMapping("/koty")
public List<Kot> getKoty(){
return kotDAO.getKoty();
}
@DeleteMapping("/koty/first/{id}")
public List<Kot> firstDeleteKot(@PathVariable("id") Integer id){
kotDAO.getKoty().remove(id);
return kotDAO.getKoty();
}
@DeleteMapping("/koty/second/{id}")
public List<Kot> SecondDeleteKot(@PathVariable("id") Integer id){
kotDAO.usunKota(id);
return kotDAO.getKoty();
}
}