public class SpringBeanUtil implements ApplicationContextAware {
@Autowired
private static ApplicationContext context = null;
private Bean1 bean1;
private Bean2 bean2;
public void setApplicationContext(ApplicationContext context) throws BeansException {
SpringBeanUtil.context = context;
// bean1 = context.getBean(Bean1.class);
// bean2 = context.getBean(Bean2.class);
bean1 = context.getAutowireCapableBeanFactory().createBean(Bean1.class);
// bean2 = context.getAutowireCapableBeanFactory().createBean(Bean2.class);
// bean2 = (Bean2) context.getAutowireCapableBeanFactory().createBean(Bean2.class, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true);
// context.getAutowireCapableBeanFactory().autowireBean(bean1);
// context.getAutowireCapableBeanFactory().autowireBeanProperties(bean2, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true);
}
public class Bean2 {
@Autowired
private Bean1 bean1;
public Bean2() {
System.out.println("bean2 创建");
}
public void testBean1IsNull() {
System.out.println("检测bean1是否被赋值 bean1 == " + bean1);
}
}
bean2中的字段也会被注入。
这里需要注意的是,如果bean1是static的 ,需要添加一个
@Autowired
public void setBean1(…)的**非**static方法,否则无法注入
字段就不需要加Autowired了、只需要加载方法上