DynamoDB ביישום אתחול האביב המשתמש בנתוני אביב

1. סקירה כללית

במאמר זה, נחקור את היסודות של שילוב DynamoDB ביישום Boot Boot עם פרויקט מעשי לדוגמא מעשי.

נדגים כיצד להגדיר יישום לשימוש במופע DynamoDB מקומי באמצעות נתוני Spring. ניצור גם מודל נתונים לדוגמא ושיעור המאגר וכן נבצע פעולות מסד נתונים בפועל באמצעות מבחן אינטגרציה.

2. DynamoDB

DynamoDB הוא מאגר NoSQL מתארח באופן מלא ב- AWS, בדומה למאגרי NoSQL אחרים כגון קסנדרה או MongoDB. DynamoDB מציע ביצועים מהירים, עקביים וצפויים וניתן להרחבה מאסיבית.

תוכל ללמוד עוד על DynamoDB בתיעוד AWS.

בוא נתקין מופע מקומי של DynamoDB כדי להימנע מלעלות על הפעלת מופע חי.

לצורך פיתוח, הפעלת DynamoDB מקומית הגיונית יותר מאשר הפעלה ב- AWS; המופע המקומי יופעל כקובץ JAR להפעלה.

תוכל למצוא הוראות כיצד להפעיל את DynamoDB באופן מקומי כאן.

3. תלות Maven

הוסף את התלות הבאה כדי להתחיל לעבוד עם DynamoDB באמצעות נתוני אביב:

  • אביב נתונים JPA
  • AWS Java SDK DynamoDB
  • Spring Data DynamoDB Module Module
   org.springframework.data spring-data-releasetrain Lovelace-SR16 pom import com.amazonaws aws-java-sdk-dynamodb 1.11.64 com.github.derjust spring-data-dynamodb 5.1.0 

בדוק את רכבת שחרור נתוני האביב, AWS Java SDK עבור אמזון DynamoDB ו- Spring Data DynamoDB עבור הגרסאות האחרונות של האמור לעיל.

4. תצורה

לאחר מכן, בואו נגדיר את המאפיינים הבאים ב- application.properties קוֹבֶץ:

amazon.dynamodb.endpoint = // localhost: 8000 / amazon.aws.accesskey = מפתח amazon.aws.secretkey = key2 

הגישה והמפתחות הסודיים המפורטים לעיל הם רק ערכים שרירותיים עבור התצורה המקומית שלך. כאשר ניגשים למופע מקומי של DynamoDB, השדות הללו צריכים להיות מאוכלסים בערכים מסוימים אך אין צורך בכדי לאמת אותם בפועל.

המאפיינים יישלפו באופן דינמי מה- application.properties קובץ תצורת האביב:

@Configuration @EnableDynamoDBR ​​מאגרים (basePackages = "com.baeldung.spring.data.dynamodb.repositories") מעמד ציבורי DynamoDBConfig {@Value ("$ {amazon.dynamodb.endpoint}") פרטי מחרוזת amazonDynamoDBEndpoint; @Value ("$ {amazon.aws.accesskey}") מחרוזת פרטית amazonAWSAccessKey; @Value ("$ {amazon.aws.secretkey}") מחרוזת פרטית amazonAWSSecretKey; @Bean הציבור AmazonDynamoDB amazonDynamoDB () {AmazonDynamoDB amazonDynamoDB = AmazonDynamoDBClient חדש (amazonAWSCredentials ()); אם (! StringUtils.isEmpty (amazonDynamoDBEndpoint)) {amazonDynamoDB.setEndpoint (amazonDynamoDBEndpoint); } תחזיר את amazonDynamoDB; } @ שעועית ציבורית AWSCredentials amazonAWSCredentials () {החזר BasicAWSCredentials חדש (amazonAWSAccessKey, amazonAWSSecretKey); }}

5. מודל הנתונים

בואו ניצור כעת מודל POJO לייצוג הנתונים המאוחסנים ב- DynamoDB.

POJO זה ישתמש בהערות דומות לאלה המשמשות במצב שינה כדי להגדיר את שם הטבלה, התכונות, המפתחות והיבטים אחרים של הטבלה.

5.1. תכונות מודל נתונים

השיעור הבא, ProductInfo, מייצג טבלה עם פריטים המכילים 3 מאפיינים:

  1. תְעוּדַת זֶהוּת
  2. MSRP
  3. עֲלוּת

5.2 מחלקת דגם נתונים של Java

בואו ניצור קובץ שנקרא ProductInfo.java בתיקיית מודל הנתונים שלך:

@DynamoDBTable (tableName = "ProductInfo") ProductInfo {מזהה מחרוזת פרטי; פרטי מחרוזת msrp; עלות מחרוזת פרטית; @DynamoDBHashKey @DynamoDBAutoGeneratedKey מחרוזת ציבורית getId () {id להחזיר; } @ DynamoDBA תכונה ציבורית מחרוזת getMsrp () {החזרת msrp; } @ DynamoDBA attribute ציבורי מחרוזת getCost () {עלות חזרה; } // קובעי סטנדרטים / קונסטרוקטורים} 

6. מאגר CRUD

לאחר מכן עלינו ליצור מאגר מוצר ממשק להגדרת פונקציונליות ה- CRUD שאנו רוצים לבנות. מאגרים המשמשים לקרוא ולהתמיד נתונים אל DynamoDB וממנו יישמו ממשק זה:

ממשק ציבורי @EnableScan ProductInfoRepository מרחיב את CrudRepository {findById אופציונלי (מזהה מחרוזת); } 

7. מבחן אינטגרציה

לאחר מכן, בואו ניצור מבחן אינטגרציה כדי להבטיח שנוכל להתחבר בהצלחה למופע המקומי של DynamoDB:

@RunWith (SpringJUnit4ClassRunner.class) @SpringBootTest (classes = Application.class) @WebAppConfiguration @ActiveProfiles ("local") @TestPropertySource (properties = {"amazon.dynamodb.endpoint = // localhost: 8000 /", "amazon.aws .accesskey = test1 "," amazon.aws.secretkey = test231 "}) מחלקה ציבורית ProductInfoRepositoryIntegrationTest {DynamoDBMapper פרטי dynamoDBMapper; @ AmazonDynamoDB פרטית אוטומטית amazonDynamoDB; @ מאגר ProductInfoRepository אוטומטי; סופי סטטי פרטי מחרוזת EXPECTED_COST = "20"; סופי סטטי פרטי מחרוזת EXPECTED_PRICE = "50"; @ לפני התקנת הריק הציבורי () זורק חריג {dynamoDBMapper = DynamoDBMapper חדש (amazonDynamoDB); CreateTableRequest tableRequest = dynamoDBMapper .generateCreateTableRequest (ProductInfo.class); tableRequest.setProvisionedThroughput (ProvisionedThroughput חדש (1 ליטר, 1 ליטר)); amazonDynamoDB.createTable (tableRequest); // ... dynamoDBMapper.batchDelete ((רשימה) repository.findAll ()); } @Test ציבורי בטל givenItemWithExpectedCost_whenRunFindAll_thenItemIsFound () {ProductInfo productInfo = ProductInfo חדש (EXPECTED_COST, EXPECTED_PRICE); repository.save (productInfo); תוצאת רשימה = (רשימה) repository.findAll (); assertThat (result.size (), is (greaterThan (0))); assertThat (result.get (0) .getCost (), הוא (שווה ל- (EXPECTED_COST))); }} 

8. מסקנה

וגמרנו - אנחנו יכולים עכשיו התחבר ל- DynamoDB מיישום אתחול האביב.

כמובן, לאחר השלמת הבדיקה באופן מקומי, עלינו להיות מסוגלים להשתמש בשקיפות במופע חי של DynamoDB ב- AWS ולהפעיל את הקוד הפרוס עם שינויי תצורה קלים בלבד.

כמו תמיד, הדוגמה המשמשת במאמר זה זמינה כפרוייקט לדוגמה ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found