No Image

Org springframework beans factory unsatisfieddependencyexception

СОДЕРЖАНИЕ
1 просмотров
10 марта 2020

I am new to Spring and I am try to make a application for learning but I am getting problem in Autowiring,I am adding my code. I am working on spring boot.

Spring Boot Code

I tried following scenarios to make my @Autowired work:

  1. @Autowired to LoginBean loginBean;
  2. Created getter setter of LoginBean in Controller class and autowired setters;
  3. Created constructor of Controller and autowired, as given in above code;

Below is the error which I am getting

1 Answer 1

Your DemoApplication class is in the com.ag.digital.demo.boot package and your LoginBean class is in the com.ag.digital.demo.bean package. By default components (classes annotated with @Component ) are found if they are in the same package or a sub-package of your main application class DemoApplication . This means that LoginBean isn’t being found so dependency injection fails.

There are a couple of ways to solve your problem:

  1. Move LoginBean into com.ag.digital.demo.boot or a sub-package.
  2. Configure the packages that are scanned for components using the scanBasePackages attribute of @SpringBootApplication that should be on DemoApplication .

A few of other things that aren’t causing a problem, but are not quite right with the code you’ve posted:

  • @Service is a specialisation of @Component so you don’t need both on LoginBean
  • Similarly, @RestController is a specialisation of @Component so you don’t need both on DemoRestController
  • DemoRestController is an unusual place for @EnableAutoConfiguration . That annotation is typically found on your main application class ( DemoApplication ) either directly or via @SpringBootApplication which is a combination of @ComponentScan , @Configuration , and @EnableAutoConfiguration .

Помогите решить такую ошибку, уже не знаю что делать, Любая помощь ценится.
В стек трейсе говорит проблема с полем userService в контроллере но я не пойму что мне нужно сделать с ним!
Конфигурационные файлы стпринг
app-config

  • Вопрос задан более года назад
  • 2072 просмотра
Читайте также:  Что значит моно аудио

No qualifying bean of type ‘com.service.UserService’ available: expected at least 1 bean which qualifies as autowire candidate

P_Alexander, Дававайте сделаем в контроллере
@Autowired
@Qualifier("myUserService")
private UserService userService;

И в самом сервисе
@Service
@Qualifier("myUserService")
@Transactional
public class UserServiceImpl implements UserService<

P_Alexander, я так понял, суть в том, что вы хотите заавтовайрить интерфейс. И, несмотря на то, что в проекте у вас всего один имплементатор, спрингу не очевидно, что нужно автовайрить именно UserServiceImpl

В чем здесь может быть ошибка?Спасибо.

DataConfig

UserRepository

UserServiceCustom

WebSecurityConfigAdapter

Log

1 ответ 1

Обычно в трассировке стека первая строка самая важная. Её и разберём.

org.springframework.beans.factory.UnsatisfiedDependencyException – это тип возникшего исключения, говорящий нам о том, что не найдена зависимость. Разбив идущее за ним сообщения по символу ; , получим всю цепочку неудовлетворённых зависимостей вплоть до корня всех бед:

  1. Error creating bean with name ‘webSecurityConfigAdapter’: Unsatisfied dependency expressed through field ‘service’
  2. Error creating bean with name ‘userServiceCustom’: Unsatisfied dependency expressed through field ‘userRepository’
  3. Error creating bean with name ‘userRepository’: Cannot create inner bean ‘(inner bean)#6b17986d’ of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property ‘entityManager’
  4. Error creating bean with name ‘(inner bean)#6b17986d’: Cannot resolve reference to bean ‘entityManagerFactory’ while setting constructor argument
  5. No bean named ‘entityManagerFactory’ available

Последняя ошибка в цепочке гласит, что нет бина с именем entityManagerFactory . Смотрим, как у вас создаётся EntityManagerFactory:

Имя бина определяется именем метода, помеченного аннотацией @Bean (если на задано параметром аннотации), а в вашем случае метод имеет имя entityManagerFactoryBean(), а не entityManagerFactory(). Переименуйте метод и всё будет в порядке.

Комментировать
1 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector