• 自定义Aware接口实现


    结论: Aware接口的实现是依赖于BeanPostProcessor接口
    示例:
    创建一个RedisAware接口,此接口继承Aware接口,具体如下

    import org.springframework.beans.factory.Aware;
    
    public interface RedisAware extends Aware {
    	void setRedis(String redis);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    创建一个RedisAware接口的实现类

    import org.springframework.stereotype.Component;
    
    @Component
    public class MyRedisAware implements RedisAware {
    
    	private String redis;
    
    	@Override
    	public void setRedis(String redis) {
    		// TODO Auto-generated method stub
    		this.redis = redis;
    		System.out.println("-----MyRedisAware----" + redis);
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    创建一个用来处理RedisAware类型接口的BeanPostProcessor

    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.BeanPostProcessor;
    import org.springframework.stereotype.Component;
    
    @Component
    public class RedisAwareProcessor implements BeanPostProcessor {
    
    	public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    
    		if (bean instanceof RedisAware) {
    			System.out.println("-----RedisAwareProcessor-----");
    			((RedisAware) bean).setRedis("myRedis");
    		}
    		return bean;
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    至此,就能实现,MyRedisAware类中redis属性的自动赋值

    要点还是,BeanPostProcessor的使用,完全可以不用Aware接口,可以自定义一个接口(AAA),
    然后在BeanPostPorcessor中检测bean是否实现了AAA接口即可对实现了AAA接口的类的属性进行制动赋值的功能

  • 相关阅读:
    Java面向对象编程(四)
    Linux12 crontab 定时任务 at 一次性任务
    近期论文总结
    高通USER版本不支持fastboot升级
    React之受控组件和非受控组件以及高阶组件
    GitLab忘记管理员密码处理和禁用注册功能
    尚硅谷_SpringMVC笔记
    torch.mm
    【linux】进程控制——1
    在 Python 中跨多个文件使用全局变量
  • 原文地址:https://blog.csdn.net/qwe885167759/article/details/133719727