2016-08-23 11 views
0

に動作しません。私はそうリポジトリインタフェースを行うための新しいファイルを作成しないためにspring-data-jpaといくつかのテストをしていた私は、次のようにメインでそれを入れている:インナーCrudRepositoryインタフェースは

@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(BRepository repository) { 
    return (args) -> { 
     log.info("Insert a"); 
     repository.save(new EntityA("TestA")); 

     log.info("Find a " + repository.findOne(1)); 

    }; 
} 


@Entity 
@Table(name = "A") 
public static class EntityA{ 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Integer id; 

    @Column(name = "NAME") 
    private String name; 

    //Getters, setters && constructors 

} 

public interface BRepository extends CrudRepository<EntityA, Integer> { 

} 

} 

その後、私は出力を見るために@BeanCommandLineRunnerでそれをテストしてみたが、私はUnsatisfiedDependencyExceptionを得た:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'demo' defined in hello.Application: Unsatisfied dependency expressed through method 'demo' parameter 0: No qualifying bean of type [hello.Application$BRepository] found for dependency [hello.Application$BRepository]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [hello.Application$BRepository] found for dependency [hello.Application$BRepository]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:467) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:776) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) [spring-boot-1.4.0.RELEASE.jar:1.4.0.RELEASE] 
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:369) [spring-boot-1.4.0.RELEASE.jar:1.4.0.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:313) [spring-boot-1.4.0.RELEASE.jar:1.4.0.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1185) [spring-boot-1.4.0.RELEASE.jar:1.4.0.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1174) [spring-boot-1.4.0.RELEASE.jar:1.4.0.RELEASE] 
    at hello.Application.main(Application.java:27) [classes/:na] 

最後に、私はいくつか間違って行っていませんでしたことを確認するために、私はそれが新しいでインターフェースリポジトリをやってテストしてみましたファイルとそれが動作します。

  • なぜ内部インターフェイスでリポジトリが動作しないのですか?

  • これは問題ですか、何らかの理由で機能しませんか?

+0

は、あなたの 'BRepository'インターフェイス上の' org.springframework.stereotype'パッケージから '@ Repository'注釈を入れました。 – DimaSan

+0

'@ Repository' ...と同じ例外はありません。 – Pau

+0

あなたは '@ EnableAutoConfiguration'と' @ ComponentScan'アノテーションで 'Application'クラスに注釈をつけようとしましたか? – DimaSan

答えて

1

春は(それがすでに@SpringBootApplicationに含まれていますが)@EnableJpaRepositoriesを使用し、それを見ています作るために、ネストされたリポジトリを参照してtrueにconsiderNestedRepositoriesブール値を設定していない(または多分私が何か間違ったことをやっています)。

ソースポスト:https://stackoverflow.com/a/24485491/2816631