package demo;
import java.lang.management.ManagementFactory;
import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloController {
private static final String[] INDEX_PROPERTIES = { "CF_INSTANCE_INDEX",
"INSTANCE_INDEX" };
private final Environment environment;
@Autowired
public HelloController(Environment environment) {
this.environment = environment;
}
@RequestMapping("/")
public ModelAndView hello() {
ModelAndView modelAndView = new ModelAndView("hello");
modelAndView.addObject("helloMessage", "Spring Boot");
modelAndView.addObject("index", getIndex());
modelAndView.addObject("uptime", getUpTime());
return modelAndView;
}
private int getIndex() {
for (String property : INDEX_PROPERTIES) {
if (this.environment.containsProperty(property)) {
return this.environment.getProperty(property, Integer.class);
}
}
return -1;
}
private String getUpTime() {
long uptime = ManagementFactory.getRuntimeMXBean().getUptime();
long minutes = TimeUnit.MILLISECONDS.toMinutes(uptime);
long seconds = TimeUnit.MILLISECONDS.toSeconds(uptime);
return String.format("%d min, %d sec", minutes,
seconds - TimeUnit.MINUTES.toSeconds(minutes));
}
}