Spring не может создать bean-компонент реализованного IgniteRepository - PullRequest
0 голосов
/ 12 февраля 2019

Я использую Spring Boot и Ignite Database

Я создал только один репозиторий, и я устанавливаю данные в Pojo для сохранения с помощью IgniteRepository

Вот обязательная зависимость для Ignite с Spring: Ignite Version :: 2.0.0

        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-core</artifactId>
            <version>${ignite.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-spring</artifactId>
            <version>${ignite.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-indexing</artifactId>
            <version>${ignite.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-spring-data</artifactId>
            <version>${ignite.version}</version>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.195</version>
        </dependency>

Здесь я использую зависимости базы данных H2, если я не использую ее, я получаю еще одну ошибку, которая полностью неизвестна.

IgniteConfiguration:

@Configuration
@EnableIgniteRepositories(excludeFilters = {
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                TempRepository.class, GarageRepository.class, CarRepository.class,
                IncidentRepository.class, MachineRepository.class, MileageRepository.class, 
                LicenseRepository.class})
})
public class IgniteSpringConfiguration {

    @Bean
     public Ignite igniteInstance() {
      IgniteConfiguration cfg = new IgniteConfiguration();
      // Setting some custom name for the node.
      cfg.setIgniteInstanceName("eventInsights");
      // Enabling peer-class loading feature.
      cfg.setPeerClassLoadingEnabled(true);
      // Defining and creating a new cache to be used by Ignite Spring Data
      // repository.
      CacheConfiguration<Long, User> userCacheConfig = new CacheConfiguration<Long, User>("UserCacheConfig");

              // Setting SQL schema for the cache.
      userCacheConfig.setIndexedTypes(Long.class, User.class);

      cfg.setCacheConfiguration(new CacheConfiguration[] {
              userCacheConfig,

      });
      return Ignition.start(cfg);
     }
}

Интерфейс репозитория пользователя:

@RepositoryConfig(cacheName = "UserCacheConfig")
public interface UserRepository extends IgniteRepository<User, Long>{

    User findByEmail(String email);
}

Теперь основной класс ::

private static UserRepository userRepo;

     private static AnnotationConfigApplicationContext ctx;
public static void main(String[] args) {
      ctx = new AnnotationConfigApplicationContext();
      ctx.register(IgniteSpringConfiguration.class);
      ctx.refresh();

      userRepo= ctx.getBean(UserRepository.class);
      User user=new User();
      user.setEmail("george.paul01@xyz.com");
      user.setId(1L);
      user.setPassword("password");
      userRepo.save(user);

      User getUser=userRepo.findByEmail("george.paul01@xyz.com");

      if(getUser!=null) {
          System.out.println(getUser.getEmail());
          System.out.println(getUser.getPassword());
      }
      else {
          System.out.println("User name is not found");
      }

}

Пользователь Pojo:

public class User implements Serializable
{
    private static final long serialVersionUID = 1L;

    public Long id;

    @QuerySqlField(index = true)
    private String password;

    @QuerySqlField(index = true)
    private String email;

    //getters and setters method here I am skipping in my question
}

После запуска появляется ошибка:

Исключение в потоке "main" org.springframework.beans.factory.UnsatisfiedDependencyException:Ошибка при создании bean-компонента с именем userRepository: неудовлетворенная зависимость выражается через параметр конструктора 0;Вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: нет доступного квалифицирующего компонента типа 'java.lang.Class>': ожидается как минимум 1 компонент, который считается кандидатом на автоматическое подключение.Аннотации зависимостей: {} в org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray (ConstructorResolver.java:749) в org.springframework.beans.factory.support.ConstructorResolver.auverwstrug. Org. Org. Org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor (AbstractAutowireCapableBeanFactory.java:1193) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:1095) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:513) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:483) в org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java: 306) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:302) в org.springframework.beans.factoryb.ban.Fan.Bean.Bean197) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:742) в org.springframework.context.support.AbstractApplicationContext.jpg,'java.lang.Class>' доступно: ожидается как минимум 1 компонент, который считается кандидатом autowire.Примечания к зависимостям: {} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound (DefaultListableBeanFactory.java:1486) в org.springframework.beact.jeltable_factory.ListableDFB.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency (DefaultListableBeanFactory.java:1066) в org.springframework.beans.factory.support.ConstructorResolver.resolveAresort.works.ConstructorResolver.createArgumentArray (ConstructorResolver.java:741) ... еще 13

1 Ответ

0 голосов
/ 12 февраля 2019

@RepositoryConfig не объявляет @Repository или @Component.Думаю, он не сканируется компонентом.Попробуйте:

@Component
@RepositoryConfig(cacheName = "UserCacheConfig")
public interface UserRepository extends IgniteRepository<User, Long>{
    User findByEmail(String email);
}
...