2015-11-30 2 views
1

У меня будет простой тест с spring data jpa.Весенние данные JPA - нет подходящего компонента для зависимости

У меня есть простой интерфейс pojo, интерфейс и приложение runner.

Вот мой код:

package aa.bb.cc.repository; 

@Repository 
public interface ContentRepository extends CrudRepository<Content, Long>{ 
} 

И у меня есть простой POJO:

@Entity 
@Table(name = "content") 
public class Content { 

public Content(String name, String title, String description) { 
    this.name = name; 
    this.title = title; 
    this.description = description; 
} 

@NotNull 
private String name; 

@NotNull 
private String title; 

@NotNull 
private String description; 
... 
} 

И Application класс:

package aa.bb.cc.repository; 

@SpringBootApplication 
public class Application { 

    private static final Logger log = LoggerFactory.getLogger(Application.class); 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class); 
    } 

    @Bean 
    public CommandLineRunner demo(ContentRepository repository) { 
     return (args) -> { 
      // save two contents 
      repository.save(new Content("name1", "title1", "description1")); 

      // fetch all Contents 
      log.info("Contents found with findAll():"); 

      for (Content eachContent : repository.findAll()) { 
       log.info(eachContent.toString()); 
      } 
      log.info(""); 
     }; 
    } 
} 

Мои pom.xml:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-data-jpa</artifactId> 
</dependency> 
<dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
    <version>1.4.185</version> 
</dependency> 

Я получаю это исключение:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [aa.bb.cc.repository.ContentRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}

Я видел некоторые связанные с этим проблемы, но не может решить эту проблему. Какое решение?

UPDATE

spring-config.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/data/jpa 
     http://www.springframework.org/schema/data/jpa/spring-jpa.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd"> 

    <jpa:repositories base-package="aa.bb.cc.repository"/> 

    <context:annotation-config/> 

</beans> 
+0

https://spring.io/guides/gs/accessing-data-jpa/ это именно тот пример, который вы имеете дело с, пожалуйста, вы можете убедиться, что ваш pom.xml выглядит точно так же. Причина, кроме того, что все, что вы опубликовали, похоже на то, что код –

+0

для весенней загрузки и данных jpa: https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot -sample-data-jpa – specializt

ответ

4

Попробуйте поместить ContentRepository, Content и Application в таком же пакете. Если тоу нужны разные пакеты, аннотировать Application с:

@EnableJpaRepositories("repository.package") 
@EntityScan("entities.package") 
@ComponentScan("other.components.package") 
0

Я рекомендую прочитать official documentation, вам необходимо активировать пакет хранилища внутри вашей конфигурации яровой, например, так:

<repositories base-package="aa.bb.cc.repository" /> 
+0

См. 'UPDATE', я добавил файл конфигурации пружины. – CVV

1

По к specializt ответ вы можете добавить аннотацию @Repository:

package aa.bb.cc.repository; 

@Repository 
public interface ContentRepository extends CrudRepository<Content, Long>{ 
} 
+0

См. «ОБНОВЛЕНИЕ» ... – CVV

+1

даже ваш обновленный вопрос не содержит '@ Repository', что необходимо. Почему вы используете разметку кода (это «разметка кода») для случайных слов? Это выглядит очень странно и не имеет смысла. – specializt

+0

@specializt Я добавил '@ Repository' – CVV

1

Хорошо, что ваш пример работает в моем env без конфигурации xml. Две вещи, которые я должен был исправить было:

  • Добавить без параметров конструктор
  • Добавить поле идентификатора с @Id аннотацию (@Id private Long id = 5l;)

Если у вас есть проблемы с этим, я могу загрузите его в мой репозиторий github и отправьте ссылку здесь.

+0

У меня все еще такая же проблема, пожалуйста, покажите свою обновленную ссылку git, спасибо. – CVV

+1

https://github.com/Mati20041/spring-data-stackoverflow-question – Mati

Смежные вопросы