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. Подробности в таблице совместимости.