微信突然很久没有联系的小码(注意下隐私)头像晃动了,打开看了看。立马内容写到“涛哥,帮我看个问题呗,折腾了半天没有看明白设问题。”。小A是之前我的朋友,转行做的java开发,我的java知识基本停留在2008年大学毕业前给老师做过的项目。毕业后一直从事C、PHP、Golang开发。N年没有接触过Java项目了,所以先是婉言拒绝了,他说应该是个很简单的问题,紧接着把项目打包发给我了。只好硬着头皮倒入了项目看了看,下面把代码简化下,大家看看这个很简单的代码。
这是一个spring项目,首先看下beans.xml
<bean id="textEditor" class="TextEditor">
<constructor-arg ref="spellChecker"/>
</bean>
<bean id="spellChecker" class="SpellChecker"></bean>
看上面的bean文件,就知道这是一个依赖注入的教程。constructor-arg参数明确指示了TextEditor这个类依赖于spellChecker类。而反过来说spellChecker类通过spring的bean文件注入到TextEditor中。
再看下TextEditor类和SpellChecker类文件
public class TextEditor {
private SpellChecker spellChecker;
public void TextEditor(SpellChecker spellChecker) {
System.out.println("Inside TextEditor constructor");
this.spellChecker = spellChecker;
}
public void checkSpelling() {
spellChecker.checkSpelling();
}
}
public class SpellChecker {
public SpellChecker() {
System.out.println("Inside SpellChecker constructor." );
}
public void checkSpelling() {
System.out.println("Inside checkSpelling." );
}
}
最后黏贴下main文件
ApplicationContext context =new ClassPathXmlApplicationContext("Beans.xml");
TextEditor te = (TextEditor) context.getBean("textEditor");
te.checkSpelling();
ok,不管咋的,我上来就运行了下,结果输入如下:
写到这里,大家都copy上面的代码到自己的ide里试试:smile:
具体原因我都不好意思在这里指出了。
总结为:基础知识不够扎实吧。