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了、只需要加載方法上