1、配置文件类
package com.zdc.sp.autowire.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
*
* 自定义组件想要使用spring容器底层的一些组件(ApplicationContext、BeanFactory、。。。。。。。);
* 自定义组件实现xxxAware;在创建对象的时候,会调用接口规定的方法注入相关组件;主要实现接口:Aware
* 把spring底层的一些组件自动注入到自定义的bean中
* xxxAware:功能使用xxxProcessor:
* ApplicationContextAware ==>ApplicationContextAwareProcessor
*
*/
@ComponentScan("com.zdc.sp.autowire.model")
@Configuration
public class AwareConfig {
}
2、bean对象:
package com.zdc.sp.autowire.model;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.EmbeddedValueResolverAware;
import org.springframework.stereotype.Component;
import org.springframework.util.StringValueResolver;
@Component
//EmbeddedValueResolverAware spring规则解析接口
public class Red implements ApplicationContextAware,BeanNameAware,EmbeddedValueResolverAware{
private ApplicationContext applicationContext;
@Override
public void setBeanName(String name) {
System.out.println("当前传入的bean的名字:"+name);
}
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
System.out.println("传入的IOC:"+applicationContext);
this.applicationContext = applicationContext;
}
@Override
public void setEmbeddedValueResolver(StringValueResolver resolver) {
String re = resolver.resolveStringValue("你好!${os.name} 。。。。。。。。。。。。。。。#{30*12}");
System.out.println(re);
}
}
3、测试类:
package com.zdc.sp.autowire.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.zdc.sp.autowire.config.AwareConfig;
public class AwareTest {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AwareConfig.class);
}
}
结果输出:
当前传入的bean的名字:red
你好!Windows 10 。。。。。。。。。。。。。。。360
传入的IOC:org.springframework.context.annotation.AnnotationConfigApplicationContext@378fd1ac: startup date [Thu Apr 25 21:33:36 CST 2019]; root of context hierarchy