Spring Boot 2.0에서 AWS DynamoDB에 어쨌든 빨리 연결하고 싶습니다.
18221 단어 spring-bootBTCDynamoDBspringAWS
1. 개요
제목대로 바쁜 사람을 위해
템플릿을 공유합니다.
github 저장소
할 일은 다음 세 가지입니다.
2. 상세
AWS 연결 정보 설정
AWS CLI를 설치합니다.
AWS CLI 설치 를 참고해 주세요.
aws configure
aws configure
을 설정합니다.
설정 파일은
어느 쪽이든 만들어집니다.
DynamoDB로 테이블 만들기
관리 콘솔에서,
테이블을 만듭니다.
테이블이 생성되면 항목 이름을 볼 수 있습니다.
(내용은 아직 비어 있습니다.)
출처
프로젝트는 다음 구성입니다.
dynamo-sample
│ .gitignore
│ build.gradle
│ gradlew
│ gradlew.bat
│ .gradle
│ gradle
│
└─src
└─main
├─java
│ └─com
│ └─example
│ │ Application.java
│ │ DynamoDBConfig.java
│ │
│ ├─model
│ │ User.java
│ │
│ ├─repositories
│ │ UserRepository.java
│ │
│ └─resource
│ UserController.java
│
└─resources
└─config
application.yml
종속 모듈 버전은 여기을 참조했습니다.
build.gradle
buildscript {
ext {
springBootVersion = '2.0.0.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
compile('org.springframework:spring-webmvc:5.0.4.RELEASE')
compile('com.github.spring-data-dynamodb:spring-data-dynamodb:5.0.2')
compile group: 'org.springframework.data', name: 'spring-data-releasetrain', version: 'Kay-SR1', ext: 'pom'
compile group: 'com.google.guava', name: 'guava', version: 'r05'
}
application.yml은 리전에 따라 엔드포인트를 변경해야 합니다.
application.yml
amazon:
dynamodb:
endpoint: https://dynamodb.ap-northeast-1.amazonaws.com
credential:
profile: default
DynamoDB와 연결하기 위한 관리자 클래스입니다.
DynamoDBConfig.java
package com.example;
import org.socialsignin.spring.data.dynamodb.repository.config.EnableDynamoDBRepositories;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
@Configuration
@EnableDynamoDBRepositories(basePackages = "com.example.repositories")
public class DynamoDBConfig {
@Value("${amazon.dynamodb.endpoint}")
private String amazonDynamoDBEndpoint;
@Value("${amazon.credential.profile}")
private String profile;
@Bean
public AmazonDynamoDB amazonDynamoDB() {
AmazonDynamoDB amazonDynamoDB = new AmazonDynamoDBClient(amazonAWSCredentials());
if (!StringUtils.isEmpty(amazonDynamoDBEndpoint)) {
amazonDynamoDB.setEndpoint(amazonDynamoDBEndpoint);
}
return amazonDynamoDB;
}
@Bean
public AWSCredentials amazonAWSCredentials() {
return new ProfileCredentialsProvider(profile).getCredentials();
}
}
일반적인 시작 클래스입니다.
Application.java
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
엔드포인트입니다.
이번은 간단하게 유저명을 등록하는 것만의 내용으로 하고 있습니다.
UserController.java
package com.example.resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.model.User;
import com.example.repositories.UserRepository;
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/init")
private void init() throws Exception {
userRepository.save(new User("taro"));
}
}
모델입니다.
User.java
package com.example.model;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAutoGeneratedKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;
@DynamoDBTable(tableName = "Table")
public class User {
private String id;
private String name;
public User() {
}
public User(String name) {
this.name = name;
}
@DynamoDBHashKey
@DynamoDBAutoGeneratedKey
public String getId() {
return id;
}
@DynamoDBAttribute
public String getName() {
return name;
}
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
DynamoDB의 테이블 조작을 정의하는 추상 클래스입니다.
UserRepository.java
package com.example.repositories;
import java.util.List;
import org.socialsignin.spring.data.dynamodb.repository.EnableScan;
import org.springframework.data.repository.CrudRepository;
import com.example.model.User;
@EnableScan
public interface UserRepository extends CrudRepository<User, String> {
List<User> findByName(String name);
}
빌드 및 실행
위 리포지토리를 빌드하고
실행하십시오.
gradlew bootrun
./gradlew bootrun
브라우저에서 다음에 액세스합니다.
http://localhost:8080/init
반환값이 없기 때문에 아무것도 나오지 않습니다.
AWS 콘솔을 확인하면
데이터가 등록되었음을 알 수 있습니다.
3. 정리
나는 의존 모듈의 버전에서 상당한 시간을 보냈다.
템플릿 을 사용해 주셔서, 여러분 행복하게 해 주셨으면 합니다.
코드의 지적도 주시면 다행입니다.
Reference
이 문제에 관하여(Spring Boot 2.0에서 AWS DynamoDB에 어쨌든 빨리 연결하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/otomoringo/items/1efa095e31b4999d3f85
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Spring Boot 2.0에서 AWS DynamoDB에 어쨌든 빨리 연결하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/otomoringo/items/1efa095e31b4999d3f85텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)