首先建一个工具类
@Component
public class SpringContextUtil implements ApplicationContextAware {
// Spring应用上下文环境
private static ApplicationContext applicationContext;
/**
* 实现ApplicationContextAware接口的回调方法,设置上下文环境
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
SpringContextUtil.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 获取对象 这里重写了bean方法,起主要作用
*/
public static Object getBean(String beanId) throws BeansException {
return applicationContext.getBean(beanId);
}
/**
* 获取当前环境
*/
public static String getActiveProfile() {
return applicationContext.getEnvironment().getActiveProfiles()[0];
}
}
以下为使用方式
service层
@service("needservice")
public class NeedserviceImpl implements Needservice {
*************************************************************
}
在非spring管理的类中使用如下方式 Needservice needservice= (Needservice) SpringContextUtil.getBean("needservice");
读取配置文件
有如下几个配置文件
里面都有这样一条记录
在非spring管理的类中使用如下方式,当然,要配置好profile
Properties props = new Properties();
String profiles = SpringContextUtil.getActiveProfile();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("application-"+profiles+".properties");
try {
props.load(is);
} catch (IOException e) {
e.printStackTrace();
}
//读取属性
path = props.getProperty("app.publish");