今天在阅读springMVC源码的过程中,有了Aware的概念
其中有个接口叫做EnvironmentAware 环境通知。
可以获取到系统的环境信息,于是就研究了一下,得到的最终结果如下图:
具体获取步骤,代码如下:
创建类:SystemController 实现接口 EnvironmentAware
package org.moon.framework.controller;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.env.PropertySource;
import org.springframework.core.env.PropertySources;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.support.StandardServletEnvironment;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
/**
* 获取系统环境信息
*/
@Controller
@RequestMapping(value = "/system")
public class SystemController implements EnvironmentAware {
private Environment environment = null;
public void setEnvironment(Environment environment) {
this.environment = environment;
}
private Properties properties = null;
/**
* 操作系统及服务器信息
*/
private final String PROPERTIESKEY = "systemProperties";
private String defaultPropertiesKey = "";
public String getDefaultPropertiesKey() {
return defaultPropertiesKey;
}
public void setDefaultPropertiesKey(String defaultPropertiesKey) {
this.defaultPropertiesKey = defaultPropertiesKey;
}
private StandardServletEnvironment getStandardServletEnvironment(){
StandardServletEnvironment standardServletEnvironment = (StandardServletEnvironment) environment;
return standardServletEnvironment;
}
private MutablePropertySources getMutablePropertySources(){
MutablePropertySources mutablePropertySources = getStandardServletEnvironment().getPropertySources();
return mutablePropertySources;
}
private PropertySource getPropertySource(){
String propertiesName = getDefaultPropertiesKey();
if(StringUtils.isBlank(propertiesName)){
throw new RuntimeException("please set default properties key....");
}
PropertySource systemProperties = getMutablePropertySources().get(propertiesName);
return systemProperties;
}
private Properties getProperties(){
Properties properties = (Properties) getPropertySource().getSource();
return properties;
}
private String getSystemConfigInfo(String key){
properties = getProperties();
String value = properties.get(key)+"";
return value;
}
/**
* 将服务器及服务器系统,web容器,java环境等全部信息封装成map
* @return
*/
@RequestMapping("/computerConfig")
@ResponseBody
public Map<String,Object> getComputerConfig() {
Map<String,Object> map = new HashMap<String, Object>();
setDefaultPropertiesKey(PROPERTIESKEY);
Properties properties = getProperties();
for (Object key : properties.keySet()) {
map.put(key.toString(),properties.get(key));
}
return map;
}
}
我们来前端访问试试
希望对大家有帮助吧!