开发者社区> 问答> 正文

spring autowired byName我没有按名字,为什么也给我配上了呢??报错

<default-autowire="byName" default-lazy-init="false">



配置文件顶部是这样的。
然后配置了

<bean id="jdbcTemplate"   class="org.springframework.jdbc.core.JdbcTemplate">
   <property name="dataSource">
        <ref bean="dataSource" />
   </property>
</bean>



我的代码
@Autowired
	private JdbcTemplate jt;



为什么这样也可以装配上啊?我百度,说byName,名字对不上的话会报错。我的既没报错,而且还装配上了。。。。


展开
收起
爱吃鱼的程序员 2020-06-14 20:23:44 673 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    @Autowired
    是当Spring容器启动时,AutowiredAnnotationBeanPostProcessor将扫描Spring容器中所有Bean,当发现Bean中拥有@Autowired注释时就找到和其匹配(默认按类型匹配)的Bean,并注入到对应的地方中去。

    @Autowired和default-autowire="byName"没有任何关系。

    擦,好久不研究研究。跟没学一样的

    哥们我觉得你没弄懂default-autowire到底是干什么的 。你在使用ref="xxx"的时候,这个default-autowire就是有用的了,default-autowire是在bean文件中的,和注解根本就不是一个概念的东西。Spring先处理bean文件中的autowire属性,然后使用BeanPostProcessor来处理@Autowired、@Resource等注解,就是你使用了<context:annotation-config/>定义的。你用SpringToolSuite打开Bean文件,在BeanGraph中就会看到context:annotation-config开头的所扫描到的一系列bean回复 @一只小桃子:当然是越底下的标签优先级越高啊,例如default-autowire设置为byName,而<bean>上使用byType,则按byType来算对的对的,以前没思考过。byName和ref如果同时配置,以谁为准呢?
    2020-06-14 20:24:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多