ClassPathXmlApplicationContext ct = new ClassPathXmlApplicationContext();
ct.refresh();
ConfigurableListableBeanFactory bf = ct.getBeanFactory();
Ad bean = (Ad) bf.createBean(Ad.class);
System.out.println("bean ="+bean);
System.out.println("size= "+bf.getBeansOfType(Ad.class).size()); // print 0
Ad クラス、ここに Ad クラス情報があります。AD は AbstractAd クラスを拡張します:
public class Ad {
@Override
public String toString() {
return "ad[adid=" + this.getId() + "]";
}
}
ここにログがあります:
[DEBUG] Creating instance of bean 'com.Ad'
[DEBUG] Finished creating instance of bean 'com.Ad'
bean = ad[adid=null]
size= 0
私の意見では、サイズは 1 である必要がありますが、何が問題なのですか?
ps:最後に GenericApplicationContext と BeanDefinition を使用し、 createBean を成功させて From context を取得します。
GenericApplicationContext ct = new GenericApplicationContext();
ct.refresh();
ConfigurableListableBeanFactory bf = ct.getBeanFactory();
System.out.println("--------------start------------/n--------------------------/n-------------------/n");
BeanDefinition definition = new RootBeanDefinition(Ad.class);
ct.registerBeanDefinition("sampleService",
System.out.println(bf.getBeansOfType(Ad.class).size()); //print 1
ログ:
[DEBUG] Creating instance of bean 'sampleService'
[DEBUG] Eagerly caching bean 'sampleService' to allow for resolving potential circular references
[DEBUG] Finished creating instance of bean 'sampleService'
1
しかし、私はまだ疑問に思っています:なぜ getBeansOfType(Ad.class).size() はClassPathXmlApplicationContext creteBean の後に 0 ですか?