Spring Data. Как создать been из интерфейса?

183
21 июля 2018, 23:20

Хочу научиться использовать Spring Data без Spring Boot.

Следуя инструкциям вот этой записи создаю интерфейс-репозиторий наследуемый от CrudRepository. В конфигурации ставлю аннотацию @EnableJpaRepositories. Создаю класс с main(), реализую в нем логику, и подымаю контекст с помощью AnnotationConfigApplicationContext.

Но при запуске программы контекст не находит нужные Bean. Как создать нужный Bean репозитория без Spring Boot?

Main:

public class TestMain {
@Resource(name = "authorService")
private AuthorService authorService;
public static void main(String[] args) {
    ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class,
            ServiceConfig.class);
    TestMain main = (TestMain) ctx.getBean("testMain");
    main.test();
    ctx.close();
}
private void test() {
    Author a = authorService.getAuthor(42L);
    System.out.println("Hi, i'm " + a.getName());
}

Репозиторий:

@Component
public interface AuthorRepository extends CrudRepository<Author, Long> {
}

Сервис:

@Component
public class AuthorService {
    @Autowired
    private AuthorRepository authorRepository;
    public Author getAuthor(Long id) {
        Optional<Author> author = authorRepository.findById(id);
        return author.get();
    }
}

JavaConfig:

@Configuration
@Import(RepositoryConfig.class)
@ComponentScan(value ="by.net.iozhukov.grizzly.application")
public class AppConfig {
    @Bean
    public TestMain testMain() {
        return new TestMain();
    }
}

@Configuration
@EnableJpaRepositories
@Import(OrmConfig.class)
public class RepositoryConfig {
}

Нижнее исключение:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'by.net.iozhukov.application.repository.impl.AuthorRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
READ ALSO
Java EE 8. Не работает валидатор

Java EE 8. Не работает валидатор

Не работает валидатор, те

212
Spring || JEE7?

Spring || JEE7?

Очень прошу человека с большим опытом ответить мне на вопросСовсем запутался с Enterprise составляющей Java

241
Пустое значение в SharedPreferences Android

Пустое значение в SharedPreferences Android

Проблема такова: почему у меня запись пустого значения? Код для записи в память рабочийПроверял

249
Увеличивать число a на n раз, но чтобы оно не увеличилось больше заданого максимума

Увеличивать число a на n раз, но чтобы оно не увеличилось больше заданого максимума

есть переменая а которая припустим не должна быть больше 5-тиЧисло n рандомно будет подбираться в диапазоне 0 - 5

206