Add REST endpoints: / and /api/health with MySQL and Redis status

This commit is contained in:
Spring Developer
2025-12-21 10:27:35 +00:00
parent 9f2da41bac
commit d87068a17c
2 changed files with 82 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
package com.vrobot.api.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, String> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
return template;
}
}

View File

@@ -0,0 +1,62 @@
package com.vrobot.api.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import jakarta.persistence.EntityManager;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
@RestController
public class HealthController {
@Autowired
private EntityManager entityManager;
@Autowired
private RedisTemplate<String, String> redisTemplate;
@GetMapping("/")
public Map<String, Object> home() {
Map<String, Object> response = new HashMap<>();
response.put("service", "Spring Boot API");
response.put("status", "running");
response.put("timestamp", LocalDateTime.now());
response.put("endpoints", Map.of(
"health", "/api/health",
"actuator", "/actuator/health"
));
return response;
}
@GetMapping("/api/health")
public Map<String, Object> health() {
Map<String, Object> response = new HashMap<>();
boolean mysqlConnected = false;
try {
entityManager.createNativeQuery("SELECT 1").getSingleResult();
mysqlConnected = true;
} catch (Exception e) {
}
boolean redisConnected = false;
try {
redisTemplate.opsForValue().set("health-check", LocalDateTime.now().toString());
String value = redisTemplate.opsForValue().get("health-check");
redisConnected = value != null;
} catch (Exception e) {
}
response.put("status", mysqlConnected && redisConnected ? "UP" : "DOWN");
response.put("timestamp", LocalDateTime.now());
response.put("mysql", mysqlConnected ? "connected" : "disconnected");
response.put("redis", redisConnected ? "connected" : "disconnected");
response.put("message", "Spring Boot API for vrobot.shop");
return response;
}
}