一、直接将对象注册成Bean,主要有以下几步:
- 通过BeanDefinition,来定义Bean(对象本身)
- 将BeanDefinition注册到容器
-
public class Student { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
public static void main(String[] args) { AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext(); //定义bean AbstractBeanDefinition beanDefinition= BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition(); beanDefinition.setBeanClass(Student.class); //注册bean applicationContext.registerBeanDefinition("s",beanDefinition); applicationContext.refresh(); //必须要刷新 Student student= applicationContext.getBean("s",Student.class); System.out.println(student); }
2.通过FactoryBean来注册Bean,主要分为以下几步:
- 实现FactoryBean
- 通过BeanDefinition来定义Bean(上步的对象)
- 注册到容器
public class StudentFactoryBean implements FactoryBean {
@Override
public Object getObject() throws Exception {
return new Student();
}
@Override
public Class<?> getObjectType() {
return Student.class;
}
}
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext();
//定义bean
AbstractBeanDefinition beanDefinition= BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();
beanDefinition.setBeanClass(StudentFactoryBean.class);
//注册bean
applicationContext.registerBeanDefinition("s",beanDefinition);
applicationContext.refresh(); //必须要刷新
Student student= applicationContext.getBean("s",Student.class);
System.out.println(student);
}