spring注解驱动开发(七):spring自动装配实现Aware接口
自定义组件使用spring底层的组件(ApplicationContext)需要实现对应的Aware接口,在创建对象时对调用相关方法,以方法回调的方式将相关组件注入到自定义组件中。
EmbeddedValueResolverAware:解析表达式#{} ${}
BeanNameAware:当前bean的名字
ApplicationContextAware :获得当前上下文
代码示例:
public class MyBean implements EmbeddedValueResolverAware, BeanNameAware, ApplicationContextAware { private ApplicationContext applicationContext; //ApplicationContextAwareProcessor XxxAwareProcessor 具体实现后置处理器 @Override public void setBeanName(String name) { System.out.println("当前bean的名字--》"+name); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { System.out.println("ApplicationContextAware-->"+applicationContext); this.applicationContext = applicationContext; } @Override public void setEmbeddedValueResolver(StringValueResolver resolver) { String str = "Hello,word ${os.name},age is #{10*3}"; String s = resolver.resolveStringValue(str); System.out.println(s); } }
配置类代码:
@Configuration @Import(MyBean.class) public class MainConfig07 { }
测试类以及控制台输出
public class Main { @Test public void test(){ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig07.class); MyBean bean = applicationContext.getBean(MyBean.class); System.out.println(bean); System.out.println(applicationContext); } }
当前bean的名字--》org.gwsix.ch07.bean.MyBean Hello,word Windows 10,age is 30 ApplicationContextAware-->org.springframework.context.annotation.AnnotationConfigApplicationContext@2d6a9952: startup date [Fri Mar 29 12:48:13 CST 2019]; root of context hierarchy org.gwsix.ch07.bean.MyBean@708f5957 org.springframework.context.annotation.AnnotationConfigApplicationContext@2d6a9952: startup date [Fri Mar 29 12:48:13 CST 2019]; root of context hierarchy
作者:
i孤独行者
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号