Nie mozna powiązać komponentu

Odpowiedz Nowy wątek
2017-01-23 11:27
Wesoły Kot
0

Witam,

mam prostego cruda zrobionego w Spring Boocie i mam problem,
probuje dowiązac Movie Service do kontrolera ale nie dziala

 @Controller
public class MovieController {

    @Autowired
    private MovieService movieService;
 public interface MovieService {
    Iterable<Movie> findAll();

    List<Movie> search(String q);

    Movie findOne(int id);

    void save(Movie contact);

    void delete(int id);

}
 public class MovieServiceImpl implements MovieService {

    @Autowired
    private MovieRepository movieRepository;

    @Override
    public Iterable<Movie> findAll() {
        return movieRepository.findAll();
    }

    @Override
    public List<Movie> search(String q) {
        return movieRepository.findByNameContaining(q);
    }

    @Override
    public Movie findOne(int id) {
        return movieRepository.findOne(id);
    }

    @Override
    public void save(Movie contact) {
        movieRepository.save(contact);
    }

    @Override
    public void delete(int id) {
        movieRepository.delete(id);
    }

}

Co moze byc problemem?

Pozostało 580 znaków

2017-01-23 11:33
0

Jeżeli mam wnioskować na podstawie tylko przytoczonych fragmentów kodu to strzelam że brakuje @Service na MovieServiceImpl.

edytowany 1x, ostatnio: Adawo, 2017-01-23 11:42

Pozostało 580 znaków

2017-01-23 11:34
0

A masz jakieś @Named, @Service czy @Component nad tym MovieServiceImpl i masz dodane skanowanie tego pakietu? Mozesz łaskawie pokazać JAKI BŁĄD sie pojawia?


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2017-01-23 11:40
Wesoły Kot
0

Probowałem dodać @Component/@Service ale nie dziala tez

Odpalam test do ladowania wszystkich beanów i mam

 Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'movieController': Unsatisfied dependency expressed through field 'movieService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'pl.Service.MovieService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

Pozostało 580 znaków

2017-01-23 12:02
0

Nazwij zmienna pola "movieServiceImpl" zamiast "movieService".

Pokaż pozostałe 2 komentarze
Nie rozumiem, jak bedzie kilka serwisow ktore implementuja ten sam interface to spring nie wie ktory ma wstrzyknac. To sie wtedy robi Service o nazwie a jak mamy Autowired to uzywamy Qualifer z ta nazwa. Czy cos pomieszalem? - podroznik 2017-01-23 12:12
No ale przecież widzisz ze u niego błąd jest taki ze beanów nie ma, a nie że jest ich za dużo. A takie wstrzykiwanie o którym piszesz to juz wygląda trochę jak próba łatania słabego designu ;) - Shalom 2017-01-23 12:14
Pewnie ze tak, ale nie jest tak ze spring szuka beana o nazwie movieService i nie znajduje bo bean ktory implementuje ten interface spring widzi pod nazwa movieServiceImpl? - podroznik 2017-01-23 12:19
@podroznik ani trochę tak nie jest bo wiązanie jest tutaj po typie a nie po nazwie. - Shalom 2017-01-23 12:20
@Shalom: Faktycznie chyba sie troche zagalopowalem. Mimo wszystko dziwne bo w spring boocie chyba z automatu jest component skan, jesli uzyl @SpringBootApplication wiec powinien widziec tego beana. - podroznik 2017-01-23 12:34

Pozostało 580 znaków

2017-01-23 12:09
0

@Wesoły Kot jesteś pewien ze skanujesz wszystkie paczki? Bez kodu trudno wróżyć. Wisi to na jakimś githubie?


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0