首页 新闻 会员 周边

spring中使用@Resource进行注入为什么可以不用set方法

0
悬赏园豆:100 [已解决问题] 解决于 2016-03-29 15:54

  我在action中使用@Resource对其中的service对象进行注入,并没有设置setXXService的方法。难道是使用了构造方法对我的service注入了吗?但是如果是使用构造方法注入,那service对象中的dao属性是怎么初始化的呢?求大神帮帮忙

覃学苦练的主页 覃学苦练 | 初学一级 | 园豆:25
提问于:2016-03-23 15:44
< >
分享
最佳答案
0

不仅是@Resource,使用@Autoware注解也是不需要set和get方法的。因为spring在实例化对象时,是通过java的反射机制注入实例。具体请自行参考java反射。

收获园豆:100
formcc | 菜鸟二级 |园豆:304 | 2016-03-29 10:10

我知道spring反射实例化对象,在实例化对象时也需要实例类中的非静态field,如果有set方法,可以通过方法名找到Method.invoke()来初始化field,但是没有set方法,spring直接修改field的权限(也就是把private修改为protected或public),然后将field初始化的吗?

覃学苦练 | 园豆:25 (初学一级) | 2016-03-29 12:22

@覃学苦练: 是的

formcc | 园豆:304 (菜鸟二级) | 2016-03-29 12:23

@formcc: 了解了,谢谢

覃学苦练 | 园豆:25 (初学一级) | 2016-03-29 15:53
其他回答(1)
0

应该是配置文件中service已经进行标注了

多罗贝勒 | 园豆:16 (初学一级) | 2016-03-24 09:39

可是我没有配置service的set方法啊,如果不使用注解的方式,即

<bean id="xxService" class="XxService"></bean>

<bean id="xxAction" class="XxAction"> 

  <property name = "xxService" ref="xxService">

</bean>

这样如果action中没有set方法,就会报错;使用了注解的方式没有set方法也不会报错

支持(0) 反对(0) 覃学苦练 | 园豆:25 (初学一级) | 2016-03-24 16:01

@覃学苦练: 对啊 如果action没有set方法,xml property会报找不到该类型 为啥。。。

支持(0) 反对(0) lebronZhan | 园豆:202 (菜鸟二级) | 2017-12-08 17:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册