实现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"));
    }
}

 

posted @ 2020-05-22 16:24  怪兽不纯粹  阅读(278)  评论(0)    收藏  举报