Почему возникает ошибка «Ошибка создания компонента с именем« *** »: неудовлетворенная зависимость выражается через поле« *** »» - PullRequest
0 голосов
/ 23 мая 2018

Я получаю ошибки при создании приложения с использованием maven, как показано ниже:

Ошибка:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name '***Controller': Unsatisfied dependency expressed through field '***ServiceImpl'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name '***ServiceImpl': Unsatisfied dependency expressed through field '***Repository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '***Repository': Post-processing of merged bean definition failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.PersistenceContext.synchronization()Ljavax/persistence/SynchronizationType;

найдите классы, как показано ниже:

Класс контроллера:

@Controller
public class UserController {

    @Autowired
    private UserServiceImpl userServiceImpl;


    ------
}

Класс обслуживания:

@Service
public interface UserService {

    ----
}

Класс обслуживания:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;


    ------

}

Класс хранилища:

@Repository
    public interface UserRepository extends JpaRepository<User, String>{

        @Query(value = "SELECT Number FROM User where Token = :token", nativeQuery=true)
        public String findNumber(@Param("token") String token);


    }

Класс сущности:

@Entity
public class User {

    @Id
    @XmlElement(name = "Number")
    protected String number;
    @XmlElement(name = "Token", required = true)
    protected String token;

    //setter & getters

}

Может кто-нибудь подсказать, пожалуйста.

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Вы пытались добавить ContextLoaderListener в ваш web.xml.

    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

, похоже, что сбой происходит во время инициализации диспетчера и соответствующего внедрения зависимости DAO.

0 голосов
/ 23 мая 2018

Решение 1
Удалите @service из интерфейса и автоматически подключенного интерфейса в классе вашего контроллера
Вот так

 public interface UserService 
{ 
}

@Service
public class UserServiceImpl implements UserService
{
      @Autowired
       private UserRepository userRepository;
}

@Controller
public class UserController
{
   @Autowired
   private UserService service //autowired interface
}

Решение2

Попробуйте удалить @service из класса ServiceImpl и интерфейс Autowired в классе контроллера, как указано выше

0 голосов
/ 23 мая 2018

Причина в том, что ваш компонент хранилища не создается из-за какого-либо метода (вероятно, findNumber).В результате этого имеются неудовлетворенные зависимости в уважаемых классах обслуживания и контроллеров.

В вашем сообщении об исключении сказано все: java.lang.NoSuchMethodError: в вашем классе репо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...