Maven과 함께 Spring Boot에서 Mongock 사용

7252 단어 springbootjavamongodb
Mongock은 변경 로그에서 MongoDB 데이터베이스 스키마의 변경 사항을 설명하고 실행하는 라이브러리입니다. 이 기사에서는 Spring Boot 애플리케이션의 해당 설정에 대해 설명합니다.

기본 구성



the introductory article 에서 애플리케이션에 Mongock을 추가하려면 mongock-bomdepdencyManagement 섹션에 pom.xml 를 추가해야 합니다. 또한 Spring Boot Maven 컨텍스트에서 Mongock을 사용하려면 두 가지 종속성이 더 필요합니다.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.mongock</groupId>
            <artifactId>mongock-bom</artifactId>
            <version>5.1.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    ...
    <dependency>
        <groupId>io.mongock</groupId>
        <artifactId>mongock-springboot</artifactId>
    </dependency>
    <dependency>
        <groupId>io.mongock</groupId>
        <artifactId>mongodb-springdata-v3-driver</artifactId>
    </dependency>
    ...
</dependencies>


Mongock용 pom.xml 확장

구성 클래스는 주석@EnableMongock으로 확장해야 합니다. 또한 다음 두 가지 속성이 필요합니다.

mongock.migration-scan-package=io.bootify.mongo.changelogs
mongock.transaction-enabled=true


정의된 패키지에서 선택할 변경 로그를 검색합니다. 트랜잭션 내 실행은 Mongock에서 권장하며 필수MongoTransactionManager는 초기 애플리케이션 내에서 이미 제공되었습니다. 명시적으로 설정auto-index-creation=true을 생략하고 필요할 때 고유 인덱스를 직접 생성합니다.

JSON 스키마 유효성 검사



이 설정으로 Mongock이 이미 활성화되어 준비되었습니다. 종종 변경 로그는 MongoDB에서 초기 문서를 생성하는 데 사용됩니다. 그러나 이 시점에서 우리는 문서가 나중에 우리의 기대에 부응하도록 JSON 스키마와 함께 컬렉션을 생성하려고 합니다.

@ChangeUnit(id = "init-customer", order = "001", author = "bootify")
public class InitCollectionsChangeLog {

    @BeforeExecution
    public void beforeExecution(final MongoTemplate mongoTemplate) {
        mongoTemplate.createCollection("customer", CollectionOptions.empty()
                .validator(Validator.schema(MongoJsonSchema.builder()
                .required("firstName", "lastName", "email")
                .properties(
                        JsonSchemaProperty.int64("id"),
                        JsonSchemaProperty.string("firstName"),
                        JsonSchemaProperty.string("lastName"),
                        JsonSchemaProperty.string("email")).build())))
                .createIndex(new Document("email", 1), new IndexOptions().name("email").unique(true));
    }

    // @RollbackBeforeExecution, @Execution, @RollbackExecution

}


JSON 스키마 및 고유 색인을 생성하는 Mongock Changelog

Mongock 버전 5부터는 @ChangeLog@ChangeUnit로 대체되었습니다. @BeforeExecution의 트랜잭션 내에서 컬렉션을 생성하는 것이 허용되지 않기 때문에 @Execution에서 컬렉션을 초기화합니다. 애플리케이션을 시작한 후 ChangeUnit이 실행되고 정의된 JSON 스키마가 MongoDB에 추가되었습니다. 기존 컬렉션의 JSON 스키마를 업데이트하려면 this StackOverflow article을 확인하십시오.

Bootify를 사용하면 사용자 정의 데이터베이스 스키마가 있는 MongoDB용 Spring Boot 애플리케이션을 무료 플랜으로 생성할 수 있습니다. Professional 요금제에서 Mongock은 고급 설정과 컬렉션의 기본 JSON 스키마를 생성하는 옵션으로 사용할 수 있습니다.

» Learn more

좋은 웹페이지 즐겨찾기