SpringBoot Сбой теперь, когда я переключаюсь с пружинных данных neo4j 4.1.3 на 5.0.0

Фон

У меня есть приложение с пружинными данными neo4j, и я перешел с 4.1.3 на 5.0.0.

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

Моя текущая версия весенней загрузки

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot</artifactId>
    <version>1.4.1.RELEASE</version>
</dependency>

проблема

Когда я бегу: mvn spring-boot:run в командной строке,

Я получаю ошибку:

***************************
APPLICATION FAILED TO START
***************************

Description:

Field actionRepository in myproject.service.ActionServiceImpl required a bean of type 'myproject.repository.ActionRepository' that could not be found.


Action:

Consider defining a bean of type 'myproject.repository.ActionRepository' in your configuration

Мой myproject.Application.java в настоящее время

@SpringBootApplication
@EnableTransactionManagement
@EnableSwagger2
@EntityScan(basePackages = "myproject.domain")
public class Application {

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

    @Bean
    public Docket Api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
                .pathMapping("/")
                .apiInfo(apiInfo());
    }

    private springfox.documentation.service.ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            .title("Service API")
    }
}

И это не находит ни один из моих контроллеров, таких как myproject.controller.ActionController.java, который содержит

...
@RestController
@Api(value = "Action", description = "Actions Management API")
@RequestMapping(value = "/api/action")
public class ActionController extends Controller<Action> {
...

Попытка № 1

Если я добавлю аннотацию @ComponentScan({"myproject.request"}) для моего класса Application ошибка исчезла, но при весенней загрузке не удалось загрузить какие-либо контроллеры, и поэтому мой Swagger не показывает API и контроллеры не запускаются. Это не решение. @SpringBootApplication должен позаботиться обо всем этом.

Вопрос

Как перенастроить загрузчик Spring, чтобы он начал работать, как это было в версии 4.1.3 данных Spring neo4j?

ОБНОВЛЕНИЕ 1 ПОПЫТКА № 2

Я попытался добавить эту аннотацию к моей class Application

@EnableNeo4jRepositories("myproject.repository") 

И ошибка изменилась на что-то менее чистое:

...

2017-10-05 13:19:46.992 ERROR 561 --- [           main] o.s.boot.SpringApplication               : Application startup failed

java.lang.NoSuchMethodError: org.springframework.data.repository.config.RepositoryConfigurationSource.getAttribute(Ljava/lang/String;)Ljava/util/Optional;
    at org.springframework.data.neo4j.repository.config.Neo4jRepositoryConfigurationExtension.postProcess(Neo4jRepositoryConfigurationExtension.java:110) ~[spring-data-neo4j-5.0.0.RELEASE.jar:5.0.0.RELEASE]
    at org.springframework.data.repository.config.RepositoryConfigurationDelegate.registerRepositoriesIn(RepositoryConfigurationDelegate.java:130) ~[spring-data-commons-1.12.0.RELEASE.jar:na]
    at org.springframework.data.repository.config.RepositoryBeanDefinitionRegistrarSupport.registerBeanDefinitions(RepositoryBeanDefinitionRegistrarSupport.java:83) ~[spring-data-commons-1.12.0.RELEASE.jar:na]

...
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.4.1.RELEASE:run (default-cli) on project myproject: An exception occurred while running. null: InvocationTargetException: org.springframework.data.repository.config.RepositoryConfigurationSource.getAttribute(Ljava/lang/String;)Ljava/util/Optional; -> [Help 1]
[ERROR] 

...

ОБНОВЛЕНИЕ 2

В попытке использовать @EnableNeo4jRepositories("myproject.repository") и обойти ошибку в обновлении 1, я попытался:

mvn clean install spring-boot: перепаковка

И это дало Build Success, но та же ошибка сохраняется:

[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.4.1.RELEASE:run (default-cli) on project myproject: An exception occurred while running. null: InvocationTargetException: org.springframework.data.repository.config.RepositoryConfigurationSource.getAttribute(Ljava/lang/String;)Ljava/util/Optional; -

ОБНОВЛЕНИЕ 3

Я получил новую аннотацию и изменил мой pom с:

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>1.12.0.RELEASE</version>
    </dependency>

в

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>2.0.0.RELEASE</version>
    </dependency>

и сейчас mvn spring-boot:run

выдает ошибку:

***************************
APPLICATION FAILED TO START
***************************

Description:

A component required a bean named 'getSessionFactory' that could not be found.


Action:

Consider defining a bean named 'getSessionFactory' in your configuration.

1 ответ

Решение

Попробуйте добавить эту аннотацию в свой класс конфигурации:

@EnableNeo4jRepositories("myproject.repository")

Обновить:

Я только что видел, как ты на Spring boot 1.4. SDN 5 совместим только с Spring Boot 2.0. Подробности в таблице совместимости.

Другие вопросы по тегам