You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring框架是否有类似phpinfo()的服务器信息聚合查看功能?

对标PHP phpinfo()的Spring信息查看方案

嘿,这个问题问到点子上了!在Spring生态里,确实有能对标PHP中phpinfo()的方案,帮你快速查看Web服务器的各类聚合信息——不管是环境变量、Bean配置、请求路径,还是数据库驱动、会话状态这些,都能搞定。下面给你分享几个最实用的方法:

1. Spring Boot Actuator(官方标配,最简便)

如果你的项目是基于Spring Boot的,那Actuator绝对是首选——它就是Spring官方提供的"系统信息仪表盘",开箱即用,能暴露大量内置端点来展示各类系统信息:

  • GET /actuator/env:查看所有环境变量、系统属性、配置文件参数,对应phpinfo()里的环境变量部分
  • GET /actuator/beans:列出Spring容器中所有的Bean定义,包括它们的类型和依赖关系
  • GET /actuator/mappings:展示所有请求映射路径和对应的处理类/方法,类似phpinfo()里的路由相关信息
  • GET /actuator/health:查看应用健康状态,包括数据库连接、缓存状态等组件的健康情况
  • GET /actuator/info:展示自定义的应用信息(可以自己配置)

启用方法:

  1. 先在pom.xml(Maven)或build.gradle(Gradle)中加入Actuator依赖
  2. 在application.properties或application.yml中配置端点暴露规则,比如:
    # 暴露所有Actuator端点(生产环境建议只暴露必要的,加权限控制)
    management.endpoints.web.exposure.include=*
    # 允许查看详细的健康信息
    management.endpoint.health.show-details=always
    
  3. 启动应用后,访问http://你的域名/actuator就能看到所有可用端点的列表,点击对应路径就能查看详细信息。

2. 自定义Info端点补充个性化信息

默认的/actuator/info可能信息不多,但你可以通过配置或者代码扩展,把你关心的信息(比如应用版本、数据库驱动版本、Git提交信息)加进去:

  • 配置方式:直接在application.properties里加info.*前缀的属性:
    info.app.name=MySpringWebApp
    info.app.version=2.1.0
    info.db.driver-class-name=com.mysql.cj.jdbc.Driver
    
  • 代码扩展:实现InfoContributor接口,自定义要展示的信息,比如会话相关统计:
    @Component
    public class SessionInfoContributor implements InfoContributor {
        @Autowired
        private HttpSession session;
    
        @Override
        public void contribute(Info.Builder builder) {
            builder.withDetail("session-id", session.getId())
                   .withDetail("session-creation-time", session.getCreationTime())
                   .withDetail("session-max-inactive-interval", session.getMaxInactiveInterval());
        }
    }
    
    这样访问/actuator/info时,就会包含这些自定义的会话信息了。

3. 自定义端点打造"一站式"info页面

如果你想要一个像phpinfo()那样的单页,把所有信息聚合在一起展示,可以自己写一个Controller,把需要的信息整合后用HTML返回:

@RestController
@RequestMapping("/springinfo")
public class SpringInfoController {

    @Autowired
    private Environment env;

    @Autowired
    private ApplicationContext appContext;

    @Autowired
    private DataSource dataSource;

    @GetMapping(produces = "text/html")
    public String springInfoPage() {
        StringBuilder html = new StringBuilder("<html><head><title>Spring Info</title></head><body>");
        
        // 环境变量部分
        html.append("<h2>环境变量与配置参数</h2>");
        html.append("<ul>");
        for (String propName : env.getPropertyNames()) {
            html.append("<li><strong>").append(propName).append(":</strong> ").append(env.getProperty(propName)).append("</li>");
        }
        html.append("</ul>");

        // Spring Bean列表
        html.append("<h2>Spring容器Bean</h2>");
        html.append("<ul>");
        for (String beanName : appContext.getBeanDefinitionNames()) {
            html.append("<li>").append(beanName).append(" - ").append(appContext.getBean(beanName).getClass().getName()).append("</li>");
        }
        html.append("</ul>");

        // 数据库驱动信息
        try {
            html.append("<h2>数据库驱动信息</h2>");
            html.append("<p>驱动类:").append(dataSource.getConnection().getMetaData().getDriverName()).append("</p>");
            html.append("<p>驱动版本:").append(dataSource.getConnection().getMetaData().getDriverVersion()).append("</p>");
        } catch (SQLException e) {
            html.append("<p>无法获取数据库信息:").append(e.getMessage()).append("</p>");
        }

        html.append("</body></html>");
        return html.toString();
    }
}

启动应用后访问/springinfo,就能看到一个类似phpinfo()的聚合页面了!

注意事项:

不管用哪种方法,生产环境一定要做好权限控制!比如用Spring Security给这些端点加登录验证,避免敏感信息泄露。

内容的提问来源于stack exchange,提问作者John R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:28:20