实现xxxxAware接口——阅读开源项目中的代码
作用:在spring容器装载Bean时,自动执行接口对应的方法。
1、BeanNameWare接口:为Bean设置名称
public void setBeanName(String s) { }
2、BeanFactoryAwar接口:为Bean设置产生该Bean的工厂。
public void setBeanFactory(BeanFactory beanFactory) throws BeansException { }
3、EnvironmentAware接口:设置Bean环境对象
public void setEnvironment(Environment environment) { }
4、ResourceLoaderAware接口:设置Bean的资源加载器
public void setResourceLoader(ResourceLoader resourceLoader) { }
示例:
mport org.apache.commons.io.IOUtils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.BeanNameAware; import org.springframework.context.EnvironmentAware; import org.springframework.context.ResourceLoaderAware; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Service; import java.io.IOException; /* Bean实现意识器 */ @Service @PropertySource(value = "t.properties",encoding = "UTF-8") public class AwareService implements BeanNameAware, BeanFactoryAware, ResourceLoaderAware, EnvironmentAware { private String beanName; private ResourceLoader resourceLoader; private Environment environment; private BeanFactory beanFactory; @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { this.beanFactory = beanFactory; } @Override public void setBeanName(String s) { this.beanName = s; } @Override public void setEnvironment(Environment environment) { this.environment = environment; } @Override public void setResourceLoader(ResourceLoader resourceLoader) { this.resourceLoader = resourceLoader; } public void output(){ System.out.println("Bean的名称为:"+beanName); System.out.println("工厂:"+beanFactory.toString()); Resource resource = resourceLoader.getResource("t.txt"); try{ System.out.println(IOUtils.toString(resource.getInputStream(),"UTF-8")); } catch (IOException e) { e.printStackTrace(); } System.out.println(environment.getProperty("yrc.usename")); } }

浙公网安备 33010602011771号