diff --git a/Dockerfile b/Dockerfile index f013bf4..043ff6d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM openjdk:11-ea-17-jre-slim +FROM openjdk:17-jdk-slim LABEL maintainer="author@javatodev.com" VOLUME /main-app ADD build/libs/device-data-api-mysql-spring-boot-0.0.1-SNAPSHOT.jar app.jar diff --git a/api_request.http b/api_request.http new file mode 100644 index 0000000..6706872 --- /dev/null +++ b/api_request.http @@ -0,0 +1,11 @@ +GET http://localhost:8080/api/v1/devices + +### CREATE DEVICE DATA +POST http://localhost:8080/api/v1/devices +Content-Type: application/json + +{ + "device_model_id": "NOKIA-1100", + "device_model": "1100", + "serial_number": "A-439048209" +} diff --git a/build.gradle b/build.gradle index 7091875..c887b86 100644 --- a/build.gradle +++ b/build.gradle @@ -24,6 +24,7 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.boot:spring-boot-starter-web' runtimeOnly 'com.mysql:mysql-connector-j' compileOnly 'org.projectlombok:lombok' diff --git a/src/main/java/com/javatodev/app/DeviceDataApiMysqlSpringBootApplication.java b/src/main/java/com/javatodev/app/DeviceDataApiMysqlSpringBootApplication.java index 995c791..ab158da 100644 --- a/src/main/java/com/javatodev/app/DeviceDataApiMysqlSpringBootApplication.java +++ b/src/main/java/com/javatodev/app/DeviceDataApiMysqlSpringBootApplication.java @@ -2,7 +2,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.data.redis.repository.configuration.EnableRedisRepositories; +@EnableCaching @SpringBootApplication public class DeviceDataApiMysqlSpringBootApplication { diff --git a/src/main/java/com/javatodev/app/controller/DeviceDataController.java b/src/main/java/com/javatodev/app/controller/DeviceDataController.java index 14c41ee..e3761c3 100644 --- a/src/main/java/com/javatodev/app/controller/DeviceDataController.java +++ b/src/main/java/com/javatodev/app/controller/DeviceDataController.java @@ -4,6 +4,7 @@ import com.javatodev.app.dto.DeviceDataDto; import com.javatodev.app.service.DeviceDataService; +import org.springframework.cache.annotation.Cacheable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; diff --git a/src/main/java/com/javatodev/app/dto/DeviceDataDto.java b/src/main/java/com/javatodev/app/dto/DeviceDataDto.java index c6b90b8..01d508a 100644 --- a/src/main/java/com/javatodev/app/dto/DeviceDataDto.java +++ b/src/main/java/com/javatodev/app/dto/DeviceDataDto.java @@ -1,5 +1,7 @@ package com.javatodev.app.dto; +import java.io.Serializable; + import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -9,7 +11,7 @@ @Setter @AllArgsConstructor @NoArgsConstructor -public class DeviceDataDto { +public class DeviceDataDto implements Serializable { private String device_model_id; private String device_model; private String serial_number; diff --git a/src/main/java/com/javatodev/app/entity/DeviceDataEntity.java b/src/main/java/com/javatodev/app/entity/DeviceDataEntity.java index cc1a9c7..83e778d 100644 --- a/src/main/java/com/javatodev/app/entity/DeviceDataEntity.java +++ b/src/main/java/com/javatodev/app/entity/DeviceDataEntity.java @@ -1,5 +1,9 @@ package com.javatodev.app.entity; +import org.springframework.data.redis.core.RedisHash; + +import java.io.Serializable; + import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; @@ -12,7 +16,7 @@ @Table(name = "device_data") @Getter @Setter -public class DeviceDataEntity { +public class DeviceDataEntity implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/com/javatodev/app/service/DeviceDataService.java b/src/main/java/com/javatodev/app/service/DeviceDataService.java index 2c5d9b1..0e3a87c 100644 --- a/src/main/java/com/javatodev/app/service/DeviceDataService.java +++ b/src/main/java/com/javatodev/app/service/DeviceDataService.java @@ -5,8 +5,11 @@ import com.javatodev.app.mapper.DeviceDataMapper; import com.javatodev.app.repository.DeviceDataRepository; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; +import java.io.Serializable; import java.util.List; import lombok.RequiredArgsConstructor; @@ -21,11 +24,13 @@ public class DeviceDataService { DeviceDataMapper deviceDataMapper = new DeviceDataMapper(); + @Cacheable(value = "DeviceData") public List readDeviceData() { List deviceData = deviceDataRepository.findAll(); return deviceDataMapper.convertToDtoList(deviceData); } +// @CachePut(value = "DeviceData", key = "#dataDto.device_model_id") public void createDeviceData(DeviceDataDto dataDto) { DeviceDataEntity deviceDataEntity = deviceDataRepository.save(deviceDataMapper.convertToEntity(dataDto)); log.info("Device data created {}", deviceDataEntity.getId()); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 7fbbf98..571e66b 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -2,3 +2,8 @@ spring.datasource.url=jdbc:mysql://127.0.0.1:3306/device-data-api-db spring.datasource.username=root spring.datasource.password=password spring.jpa.hibernate.ddl-auto=update +# Redis Config +spring.cache.type=redis +spring.data.redis.host=127.0.0.1 +spring.data.redis.port=6379 +spring.main.allow-bean-definition-overriding=true