diff --git a/springboot/autoconfig/src/main/java/hello/config/MemoryConfig.java b/springboot/autoconfig/src/main/java/hello/config/MemoryConfig.java new file mode 100644 index 00000000..51892f35 --- /dev/null +++ b/springboot/autoconfig/src/main/java/hello/config/MemoryConfig.java @@ -0,0 +1,20 @@ +package hello.config; + +import memory.MemoryController; +import memory.MemoryFinder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MemoryConfig { + + @Bean + public MemoryController memoryController() { + return new MemoryController(memoryFinder()); + } + + @Bean + public MemoryFinder memoryFinder() { + return new MemoryFinder(); + } +} diff --git a/springboot/autoconfig/src/main/java/memory/Memory.java b/springboot/autoconfig/src/main/java/memory/Memory.java new file mode 100644 index 00000000..490a683b --- /dev/null +++ b/springboot/autoconfig/src/main/java/memory/Memory.java @@ -0,0 +1,14 @@ +package memory; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.ToString; + +@Getter +@AllArgsConstructor +@ToString +public class Memory { + + private long used; + private long max; +} diff --git a/springboot/autoconfig/src/main/java/memory/MemoryController.java b/springboot/autoconfig/src/main/java/memory/MemoryController.java new file mode 100644 index 00000000..a6d24dd8 --- /dev/null +++ b/springboot/autoconfig/src/main/java/memory/MemoryController.java @@ -0,0 +1,21 @@ +package memory; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequiredArgsConstructor +public class MemoryController { + + private final MemoryFinder memoryFinder; + + @GetMapping("/memory") + public Memory system() { + Memory memory = memoryFinder.get(); + log.info("memory={}", memory); + return memory; + } +} diff --git a/springboot/autoconfig/src/main/java/memory/MemoryFinder.java b/springboot/autoconfig/src/main/java/memory/MemoryFinder.java new file mode 100644 index 00000000..50dc456b --- /dev/null +++ b/springboot/autoconfig/src/main/java/memory/MemoryFinder.java @@ -0,0 +1,21 @@ +package memory; + +import jakarta.annotation.PostConstruct; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class MemoryFinder { + + public Memory get() { + long max = Runtime.getRuntime().maxMemory(); + long total = Runtime.getRuntime().totalMemory(); + long free = Runtime.getRuntime().freeMemory(); + long used = total - free; + return new Memory(used, max); + } + + @PostConstruct + public void init() { + log.info("init memoryFinder"); + } +}