방 - 제공된 유형 변환기 설명
유형 변환기 란 무엇입니까?
Room을 사용하여 복잡한(기본이 아닌) 데이터에 액세스하려면 Type Converter을 사용해야 합니다. 유형 변환기는
@TypeConverter
주석이 달린 메서드입니다. 정확히 하나의 매개변수를 받아야 하며 void가 아닌 반환 유형을 가져야 합니다. Room은 이를 호출할 수 있어야 하므로 이러한 메서드는 다음 조건 중 하나도 충족해야 합니다.이는
@TypeConverter
주석이 달린 메서드가 포함된 클래스에 종속성을 전달할 방법이 없음을 의미합니다. 이issue의 작성자는 Json 직렬 변환기를 유형 변환기에 전달하는 예를 언급했습니다. 이를 수행하는 유일한 옵션은 전역 상태를 사용하는 것이었습니다. 그러나 이제 새롭고 더 나은 방법이 있습니다.제공되는 유형 변환기
Room2.3.0-alpha03에는 앞서 언급한 문제에 대한 솔루션인 제공된 유형 변환기라는 새로운 기능이 포함되어 있습니다. 룸은
@TypeConverter
주석이 달린 메서드를 호출하기에 충분한 정보가 있는지 컴파일 타임에 확인합니다. 가능하지 않으면 컴파일이 실패합니다. 제공된 유형 변환기의 아이디어는 개발자가 유형 변환기의 인스턴스화를 제어하고 다른 클래스처럼 처리할 수 있는 가능성을 제공한다는 것입니다. 이는 Type Converter 클래스에 @ ProvidedTypeConverter
주석을 달아 Room이 이 주석이 없는 변환기에 대해 수행하는 컴파일 시간 검사 중 일부를 건너뛰도록 지시함으로써 달성됩니다. 개발자는 addTypeConverter
에서 새로운 Room.databaseBuilder
메서드를 호출하여 이러한 변환기의 인스턴스를 Room에 수동으로 추가해야 합니다. 그렇지 않으면 Room은 변환기를 사용할 수 없으며 런타임에 예외가 발생합니다.다음은 제공된 유형 변환기 기능을 사용하여 유형 변환기에 종속성을 전달하는 간단한 예입니다.
// Annotate converter to skip compile time validation
@ProvidedTypeConverter
class ExampleConverter(private val dependency: Foo) {
@TypeConverter
fun fromString(value: String?): Bar {
return dependency.toBar(value)
}
@TypeConverter
fun barToString(bar: Bar?): String {
return dependency.toString(bar)
}
}
// Create or inject ExampleConverter instance and
// pass it to RoomDatabase builder
val exampleConverterInstance = ExampleConverter(Foo());
db = Room.databaseBuilder(...)
.addTypeConverter(exampleConverterInstance)
.build();
AndroidX에 기여
얼마 전 AndroidX는 GitHub으로 푸시되었는데, 이는 누구나 AOSP를 당기고 도구를 배우지 않고도 기여할 수 있음을 의미합니다. 이 게시물을 작성하는 시점에서 Room, Paging, Work Manager, Fragment, Activity 및 Navigation의 6개 프로젝트가 기여를 위해 열려 있습니다. 이슈 트래커에 버그 현상금hotlist이 있습니다. 여기에는 외부 기여자가 선택할 수 있는 버그 및 기능 목록이 포함되어 있습니다. 프로세스는 다음과 같습니다.
차단기가 있거나 어디서부터 시작해야 할지 명확하지 않은 경우 관리자가 도움을 줄 수 있습니다. 그들은 매우 도움이되고 반응이 빠르기 때문에 그들에게 연락하는 것을 두려워 할 필요가 없습니다!
기여 과정에서 많은 것을 배웠고 작업하는 것이 즐거웠습니다. 또한 AndroidX API를 설계하는 데 얼마나 많은 주의를 기울이고 있는지 확인할 수 있었기 때문에 눈을 뗄 수 없는 경험이었습니다. 저는 룸 코드를 본 적이 없고 주석 처리에 대한 경험이 거의 없었지만 제가 할 수만 있다면 여러분도 할 수 있습니다! 외부 기여가 많을수록 기여를 위해 더 많은 프로젝트가 열립니다.
나는 그것을 할 수 없었을 것입니다. 그리고 – 이 게시물을 교정해 주시고 지원해주셔서 감사합니다!
Reference
이 문제에 관하여(방 - 제공된 유형 변환기 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mzgreen/room-provided-type-converters-explained-2hfd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)