java – Spring @Autowired构造函数给出没有找到默认构造函数
发布时间:2020-12-15 02:29:36 所属栏目:Java 来源:网络整理
导读:这里有一些来自 Spring 3.0的奇怪行为. package com.service.schedule;import org.springframework.stereotype.Component;@Component("outroJob")public class OutroJob { public void printMe() { System.out.println("running..."); }} 和 package com.ser
这里有一些来自
Spring 3.0的奇怪行为.
package com.service.schedule; import org.springframework.stereotype.Component; @Component("outroJob") public class OutroJob { public void printMe() { System.out.println("running..."); } } 和 package com.service.schedule; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Component; @Component("testeAutowired") public class TesteAutowired { @Autowired public TesteAutowired(OutroJob outroJob) { outroJob.printMe(); } public static void main(String[] args) { ClassPathResource res = new ClassPathResource("applicationContext.xml"); XmlBeanFactory ctx = new XmlBeanFactory(res); OutroJob outroJob = (OutroJob) ctx.getBean("outroJob"); outroJob.printMe(); // gives: running... ctx.getBean("testeAutowired"); } } 这些bean都不在applicationContext.xml上声明 所以,行outroJob.printMe();工作正常…打印“正在运行…” 但当我试图获得“testeAutowired”bean时,它说:
问题是:为什么,如果Spring找到了“outroJob”bean,它不会在TesteAutowired构造函数上自动启动它? 它显然需要做什么…… 解决方法
尝试使用ApplicationContext而不是XmlBeanFactory. XmlBeanFactory不会后处理注释,即不使用AutowiredAnnotationBeanPostProcessor来解释您遇到的行为.
Here’s some more explanation (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |