Spring Aware的目的是为了让Bean获得Spring容器的服务
//获取容器中的bean名称
import org.springframework.beans.factory.BeanNameAware;
//获得资源加载器,可以获得额外的资源
import org.springframework.context.ResourceLoaderAware;
package ch2.aware;
import java.io.IOException;import org.apache.commons.io.IOUtils;
//获取容器中的bean名称
import org.springframework.beans.factory.BeanNameAware;
//获得资源加载器,可以获得额外的资源
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Service;//AwareService是spring的一个组件
@Service
//实现BeanNameAware,ResourceLoaderAware资源的接口,获得名称和资源加载的服务
public class AwareService implements BeanNameAware,ResourceLoaderAware {private String beanName;private ResourceLoader loader;//实现ResourceLoaderAware需要重写setResourceLoader@Overridepublic void setResourceLoader(ResourceLoader resourceLoader) {// TODO Auto-generated method stubthis.loader = resourceLoader;}//实现BeanNameAware需要重写setBeanName@Overridepublic void setBeanName(String name) {// TODO Auto-generated method stubthis.beanName = name; }public void outputResult(){System.out.println("bean的名字为:"+ beanName);Resource resource = loader.getResource("classpath:ch2/aware/test.txt");try {System.out.println("ResourceLoader加载的内容为:" + IOUtils.toString(resource.getInputStream()));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
配置:
package ch2.aware;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;//声明本类是一个配置类
@Configuration
//自动加载ch2.aware包下面的内容
@ComponentScan("ch2.aware")
public class AwareConfig {}
运行:
package ch2.aware;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Main {public static void main(String[] args){AnnotationConfigApplicationContext context= new AnnotationConfigApplicationContext(AwareConfig.class);AwareService awareService = context.getBean(AwareService.class);awareService.outputResult();context.close();}}