Arango Spring-data документация больше не актуальна. Не ясно, что вы должны сделать для новой модели кодирования - PullRequest
0 голосов
/ 03 ноября 2019

Я борюсь с изменениями в самом последнем коде проекта arangodb-spring-data, который не соответствует старой документации.

Вот мои обновленные зависимости сборки gradle

plugins {
    id 'org.springframework.boot' version '2.2.0.RELEASE'
    id 'groovy'
}

apply plugin: 'io.spring.dependency-management'
...

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    //implementation 'org.codehaus.groovy:groovy'
    implementation group: 'org.codehaus.groovy', name: 'groovy-all', version: '3.0.0-rc-1'

//    testImplementation group: 'org.spockframework', name: 'spock-core', version: '1.3-groovy-2.5'

    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'com.arangodb:arangodb-spring-data:3.2.3'
    implementation  'com.arangodb:arangodb-java-driver:6.4.1'
}

У меня есть класс arangoConfiguration, подобный этому:

@Configuration
@EnableArangoRepositories(basePackages = [ "com.softwood.arango" ])
class ArangoConfiguration extends AbstractArangoConfiguration {  //changed since 3.2.0
//class ArangoConfiguration  {


    @Override
    public Builder arango() {
        return new ArangoDB.Builder().host("localhost", 8529).user("root").password(null)
    }

    @Override
    public String database() {
        return "testDB"
    }
}

Однако в IDE теперь он показывает, что extends AbstractArangoConfiguration устарела. Теперь в моем классе ArangoConfiguration вместо этого есть интерфейс, называемый ArangoConfiguration.

Я попытался изменить код для реализации этого интерфейса, и он не работает, так как я получаю ошибку зависимости bean-компонента с не определенными ArangoOperations - что еслиВы расширяете устаревший абстрактный класс не происходит. Spring не удается внедрить bean-компонент autowired для операций - если вы попытаетесь реализовать его из интерфейса ArangoConfiguration в копии демонстрационного кода, вы можете найти его в github пример кода .

Мой CrudRunner выглядит следующим образомthis

@ComponentScan("com.softwood.arango")
public class CrudRunner implements CommandLineRunner {

    @Autowired
    private ArangoOperations operations
    @Autowired
    private OrganisationRepository orgRepo

    @Autowired
    private SiteRepository siteRepo

    @Autowired
    private OperatesFromManyRepository ownsRepo  //edge relationship
    ....

Код работает, если я возвращаюсь к устаревшему подходу к модели - однако я все еще получаю отдельное несвязанное предупреждение с проблемой отражения, используя Java 11.0.5. Это не останавливает его работу, но кодовая база делает то, что не нравится Java 11.

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.springframework.cglib.core.ReflectUtils (file:/C:/Users/will/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/5.2.0.RELEASE/e0e1b3c304f70ed19d7905975f6f990916ada219/spring-core-5.2.0.RELEASE.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of org.springframework.cglib.core.ReflectUtils
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

В документации по использованию данных arangodb-spring-data ничего не обновлено, чтобы отразить дальнейшие действияс новым интерфейсом.

Как должна выглядеть последняя версия V.3.0 +?

Предупреждение Java 11 - проблема, но, похоже, код все еще работает, но нуждается в исправлении;это не происходит в Java 8.

Если кто-то знает, что новый подход может им поделиться, иначе мне придется опубликовать его на страницах проекта Git.

...