spring中利用xml配置javaBean很简单最近在研究過程中发现了两个容易忽视的小知识点,贴出来以供参考
案例以最简单的hello word形式进行展开,项目结构和主要代码如下:
以上代码在配置正確的情况下运行结果应该为
下面在以上代码的基础上说明两个问题
在applicationContext.xml配置文件中标签中的class指定的是javaBean的全类名,底层是利用反射创建对象此时,该类必须含有无参构造器!
我们尝试加入自定义有参构造器用来屏蔽自动添加的无参构造器
此时配置文件会报错错误如下
手动添加无参构造器运行正常
name;中的name
吗?其实并不是name
只是Person
类的成员变量,真正的属性其实是Set***
方法中的名词本例中就是name。因为java标准规定Get***
和Set***
方法必须和成员变量相对应所以才会给我们这样的错觉。
但实际上从编码角度考虑,我们可以把Set***
方法改成任意的名称都不妨碍我们给name
成員变量赋值!!
下面通过实验验证,我们首先将SetName
改为SetName1
此时IDEA提示我们配置文件出错,如下
意思时未找到属性名称为name
的属性
接着我们将配置攵件中的name
改为name1
运行正常