Spring中XML定义的Bean是否仅需Setter和Getter即可工作?
回答
不是仅靠Setter和Getter就能让Spring Bean正常工作,你的场景能运行是几个条件共同作用的结果:
默认无参构造方法的存在:你注释了带参数的构造方法,但Java会为没有显式定义任何构造方法的类自动生成一个public的无参构造方法。Spring创建Bean实例时,默认会调用这个无参构造方法来初始化对象,这是Bean能被实例化的基础。如果显式定义了任何构造方法(哪怕是带参的),Java就不会自动生成无参构造,这时Spring找不到可用的构造方法就会报错。
Setter方法用于属性注入:你在XML里用了
<property>标签,这是Spring的Setter注入方式。Spring在实例化Bean后,会通过反射调用对应属性的Setter方法(比如setName)来设置属性值,这就是你能看到"Setter Method"打印、属性值被正确设置的原因。Getter方法不是必须的:Getter方法主要是供外部读取Bean的属性值,比如在其他组件里调用
person.getName(),或者Spring的EL表达式、属性绑定等特性中用到。如果业务逻辑不需要读取属性,完全可以去掉Getter方法,Bean依然能被正常实例化和注入属性。
总结:Spring Bean正常工作的核心前提是存在可被Spring调用的构造方法(默认无参或显式定义的构造方法),Setter方法是Setter注入模式下设置属性的手段,Getter则是按需使用的可选方法。
内容的提问来源于stack exchange,提问作者user20820474
相关产品推荐
相关产品推荐

