Spring Cloud Cloud Spanner 自定義類型

2024-01-11 14:54 更新

定制轉(zhuǎn)換器可用于擴(kuò)展對用戶定義類型的類型支持。

  1. 轉(zhuǎn)換器需要在兩個(gè)方向上實(shí)現(xiàn)org.springframework.core.convert.converter.Converter接口。
  2. 用戶定義的類型需要映射到Spanner支持的基本類型之一:

    • com.google.cloud.ByteArray
    • com.google.cloud.Date
    • com.google.cloud.Timestamp
    • java.lang.Boolean, boolean
    • java.lang.Double, double
    • java.lang.Long, long
    • java.lang.String
    • double[]
    • long[]
    • boolean[]
    • enum類型
  3. 兩個(gè)轉(zhuǎn)換器的實(shí)例都需要傳遞到ConverterAwareMappingSpannerEntityProcessor,然后必須將其作為SpannerEntityProcessor@Bean使用。

例如:

我們希望在Trade POJO上有一個(gè)類型為Person的字段:

@Table(name = "trades")
public class Trade {
  //...
  Person person;
  //...
}

其中Person是一個(gè)簡單的類:

public class Person {

  public String firstName;
  public String lastName;

}

我們必須定義兩個(gè)轉(zhuǎn)換器:

  public class PersonWriteConverter implements Converter<Person, String> {

    @Override
    public String convert(Person person) {
      return person.firstName + " " + person.lastName;
    }
  }

  public class PersonReadConverter implements Converter<String, Person> {

    @Override
    public Person convert(String s) {
      Person person = new Person();
      person.firstName = s.split(" ")[0];
      person.lastName = s.split(" ")[1];
      return person;
    }
  }

這將在我們的@Configuration文件中進(jìn)行配置:

@Configuration
public class ConverterConfiguration {

	@Bean
	public SpannerEntityProcessor spannerEntityProcessor(SpannerMappingContext spannerMappingContext) {
		return new ConverterAwareMappingSpannerEntityProcessor(spannerMappingContext,
				Arrays.asList(new PersonWriteConverter()),
				Arrays.asList(new PersonReadConverter()));
	}
}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號