DynamoDB egy tavaszi rendszerindító alkalmazásban a tavaszi adatok felhasználásával
1. Áttekintés
Ebben a cikkben, feltárjuk a DynamoDB egy Spring Boot alkalmazásba történő integrálásának alapjait gyakorlati, gyakorlati példaprojektel.
Bemutatjuk, hogyan konfigurálhat egy alkalmazást egy helyi DynamoDB példány használatára a Spring Data segítségével. Létrehozunk egy példa adatmodellt és adattár osztályt, valamint integrációs teszt segítségével elvégezzük a tényleges adatbázis-műveleteket.
2. DynamoDB
A DynamoDB egy teljesen felügyelt NoSQL adatbázis az AWS-en, hasonlóan más NoSQL adatbázisokhoz, például a Cassandra vagy a MongoDB. A DynamoDB gyors, következetes és kiszámítható teljesítményt kínál, és masszívan skálázható.
A DynamoDB-ről többet megtudhat az AWS dokumentációban.
Telepítsük a DynamoDB helyi példánya hogy elkerülje az élő példány futtatásának költségeit.
A fejlesztés szempontjából a DynamoDB lokális futtatása értelmesebb, mint az AWS-en történő futtatás; a helyi példány futtatható JAR fájlként fog futni.
A DynamoDB helyi futtatásáról itt talál útmutatást.
3. Maven-függőségek
Adja hozzá a következő függőségeket a DynamoDB használatához a Spring Data használatával:
- Spring Data JPA
- AWS Java SDK DynamoDB
- Tavaszi Data DynamoDB közösségi modul
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
Nézze meg a Spring Data Release Train, az AWS Java SDK for Amazon DynamoDB és a Spring Data DynamoDB alkalmazásokat a fentiek legfrissebb verzióihoz.
4. Konfiguráció
Ezután határozzuk meg a következő tulajdonságokat a alkalmazás.tulajdonságok fájl:
amazon.dynamodb.endpoint = // localhost: 8000 / amazon.aws.accesskey = kulcs amazon.aws.secretkey = kulcs2
A fent felsorolt hozzáférési és titkos kulcsok csak tetszőleges értékek a helyi konfiguráció számára. A DynamoDB helyi példányának elérésekor ezeket a mezőket meg kell tölteni néhány értékkel, de a tényleges hitelesítéshez nem szükségesek.
A tulajdonságokat dinamikusan kihúzzuk a alkalmazás.tulajdonságok fájl a tavaszi konfig:
@Configuration @EnableDynamoDBRepositories (basePackages = "com.baeldung.spring.data.dynamodb.repositories") public class DynamoDBConfig {@Value ("$ {amazon.dynamodb.endpoint}") private String amazonDynamoDB @Value ("$ {amazon.aws.accesskey}") privát karakterlánc amazonAWSAccessKey; @Value ("$ {amazon.aws.secretkey}") privát karakterlánc amazonAWSSecretKey; @Bean public AmazonDynamoDB amazonDynamoDB () {AmazonDynamoDB amazonDynamoDB = new AmazonDynamoDBClient (amazonAWSCredentials ()); if (! StringUtils.isEmpty (amazonDynamoDBEndpoint)) {amazonDynamoDB.setEndpoint (amazonDynamoDBEndpoint); } return amazonDynamoDB; } @Bean public AWSCredentials amazonAWSCredentials () {új BasicAWSCredentials-t ad vissza (amazonAWSAccessKey, amazonAWSSecretKey); }}
5. Az adatmodell
Most hozzunk létre egy POJO modellt a DynamoDB-ben tárolt adatok ábrázolásához.
Ez a POJO a Hibernátusban használtakhoz hasonló kommentárokat fog használni a táblázat nevének, attribútumainak, kulcsainak és a táblázat egyéb szempontjainak meghatározásához.
5.1. Adatmodell attribútumok
A következő osztály, Termék információ, egy olyan táblázatot képvisel, amely 3 attribútumot tartalmazó elemekkel rendelkezik:
- ID
- MSRP
- Költség
5.2 Java adatmodell osztály
Hozzunk létre egy nevű fájlt ProductInfo.java az adatmodell mappájában:
@DynamoDBTable (tableName = "ProductInfo") public class ProductInfo {private String id; privát karakterlánc msrp; privát húrköltség; @DynamoDBHashKey @DynamoDBAutoGeneratedKey public String getId () {return id; } @DynamoDBAttribute public String getMsrp () {return msrp; } @DynamoDBAttribute public String getCost () {return cost; } // szabványos beállítók / kivitelezők}
6. CRUD Adattár
Ezután létre kell hoznunk a ProductRepository interfész a kiépíteni kívánt CRUD funkció meghatározásához. A DynamoDB-be és onnan érkező adatok beolvasására és megőrzésére használt adattárak ezt az interfészt valósítják meg:
A @EnableScan nyilvános felület ProductInfoRepository kiterjeszti a CrudRepository {Opcionális findById (String id); }
7. Integrációs teszt
Ezután hozzunk létre egy integrációs tesztet annak biztosítására, hogy sikeresen csatlakozzunk a DynamoDB helyi példányához:
@RunWith (SpringJUnit4ClassRunner.class) @SpringBootTest (class = Application.class) @WebAppConfiguration @ActiveProfiles ("local") @TestPropertySource (properties = {"amazon.dynamodb.endpoint = // localhost: 8000 /", "amazon .accesskey = test1 "," amazon.aws.secretkey = test231 "}) public class ProductInfoRepositoryIntegrationTest {private DynamoDBMapper dynamoDBMapper; @Autowired privát AmazonDynamoDB amazonDynamoDB; @Autowired ProductInfoRepository repository; privát statikus végső karakterlánc EXPECTED_COST = "20"; privát statikus végső karakterlánc EXPECTED_PRICE = "50"; @A nyilvános void beállítása előtt () dobja a Kivételt {dynamoDBMapper = new DynamoDBMapper (amazonDynamoDB); CreateTableRequest tableRequest = dynamoDBMapper .generateCreateTableRequest (ProductInfo.class); tableRequest.setProvisionedThroughput (új ProvisionedThroughput (1L, 1L)); amazonDynamoDB.createTable (tableRequest); // ... dynamoDBMapper.batchDelete ((List) repository.findAll ()); } @Test public void givenItemWithExpectedCost_whenRunFindAll_thenItemIsFound () {ProductInfo productInfo = new ProductInfo (EXPECTED_COST, EXPECTED_PRICE); repository.save (productInfo); Lista eredménye = (Lista) adattár.findAll (); assertThat (eredmény.méret (), van (nagyobbThan (0))); assertThat (result.get (0) .getCost (), is (equalTo (EXPECTED_COST))); }}
8. Következtetés
És készen vagyunk - most már megtehetjük csatlakozzon a DynamoDB-hez egy Spring Boot alkalmazásból.
Természetesen a helyi tesztelés befejezése után képesnek kell lenniünk arra, hogy átláthatóan használjuk a DynamoDB élő példányát az AWS-en, és futtassuk a telepített kódot csak kisebb konfigurációs változtatásokkal.
Mint mindig, az ebben a cikkben használt példa mintaprojektként is elérhető a GitHubon.