我们应该明白,spring的依赖注入的最大亮点是你所有的Bean对Spring容器的存在是没有意识的,我们可以将Spring容器换成其他的容器,Spring容器中的Bean的耦合度因此也是极低的。
但是我们在实际的开发中,我们却经常要用到Spring容器本身的功能资源,所以Spring容器中的Bean此时就要意识到Spring容器的存在才能调用Spring所提供的资源。我们通过Spring提供的一系列接口Spring Aware来实现具体的功能。
首先介绍一下Spring所提供的Aware接口:
private Properties settings;
private ResourceLoader loader;
private static final String SETTINGS_FILE = "classpath:/config/settings.properties";
public Properties getSettings() {
return settings;
}
public void setProperty(String key,String value){
settings.setProperty(key, value);
}
public String getProperty(String key){
return settings.getProperty(key);
}
public double getDouble(String key){
return Double.parseDouble(settings.getProperty(key));
}
public int getInteger(String key){
return Integer.parseInt(settings.getProperty(key));
}
public void save(){
try {
OutputStream outputStream = new FileOutputStream(loader.getResource(SETTINGS_FILE).getFile());
settings.store(outputStream, "");
outputStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void setResourceLoader(ResourceLoader loader) {
this.loader = loader;
try {
FileInputStream inputStream = new FileInputStream(loader.getResource(SETTINGS_FILE).getFile());
settings = new Properties();
settings.load(inputStream);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}