spring boot学习6-Aware感知

spring容器中的bean对spring容器的存在是没有意识的,甚至我们可以自由切换容器。当我们需要调用

spring容器的资源的时候就需要让bean感知到spring容器的存在,因此spring为我们提供了aware接口。

常用的几个aware接口:

 * BeanNameAware 获得容器中bean的名称
 * BeanFactoryAware获得当前的beanfactory这样可以调用容器的服务
 * MessageSourceAware 获得message source 这样可以获得文本信息
 * ApplicationEventPublisherAware 应用事件发布器,可以发布事件
 * ResourceLoaderAware获得资源加载器,可以获得外部资源文件

下面编写一个demo实现aware接口,这里我们把test.txt放在resource文件夹下面

@Service
public class DemoBean implements BeanNameAware,ResourceLoaderAware {

    private String beanName;
    private ResourceLoader loader;

    /**
     *
     * @param resourceLoader
     * @OVerride标签用于重写父类方法
     */
    @Override
    public void setResourceLoader(ResourceLoader resourceLoader){
        this.loader = resourceLoader;
    }
    @Override
    public void setBeanName(String name){
        this.beanName = name;
    }

    /**
     * ctr+alt+t  引入try catch快捷方式
     */
    public void outputResult(){
        System.out.println("Bean的名称为:"+beanName);

        //Resource resouce = loader.getResource("classpath:com/example/demo/test.txt");
        Resource resouce = loader.getResource("test.txt");

        try {
            System.out.println("ResourceLoader加载的内容为:"+ IOUtils.toString(resouce.getInputStream()));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

配置类就不细说了,直接上代码

/**

* Created by lengshan on 2018/3/22 0022. */@Component@ComponentScan("com.example.demo")public class Myconfig {}

Main函数编写

@SpringBootApplication
public class DemoSpringawareApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoSpringawareApplication.class, args);

		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Myconfig.class);

		DemoBean demo = context.getBean(DemoBean.class);
		demo.outputResult();
		context.close();
	}
}

运行结果是



参考:《Java EE开发的颠覆者 spring boot实战》


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值