首页 > 其他 > 详细

@Autowired

时间:2019-07-13 00:52:53      阅读:107      评论:0      收藏:0      [点我收藏+]

1.结论:@Autowired 默认是按照byType进行注入的,如果发现找到多个bean,则,又按照byName方式比对,如果还有多个,则报出异常。

2.byType是什么?byName是什么?

2.1.@Autowired修饰变量

@Autowired
DataSource ds;

byType是DataSource(变量类型)

byName是ds(变量名)

2.2.@Bean修饰变量

@Bean
public DataSource dataSource1() { 
    return new DruidDataSource(); 
}
@Bean
public DataSource dataSource2(){
    return new DruidDataSource(); 
}

byType是DataSource(方法返回值)

byName是dataSource1与dataSource2(方法名)

2.3.xml创建bean(之后再写)

3.解决冲突

3.1.byType相同,使用@Primary注解(优先级byType>@Primary>byName)

@Bean
@Primary
public DataSource dataSource1() { 
    return new DruidDataSource(); 
}
@Bean
public DataSource dataSource2(){
    return new DruidDataSource(); 
}

3.2.修改byName为指定名称(不修改变量名),@Qualifier("xxx")

@Autowired
@Qualifier("dataSource1")
DataSource ds;

 另注:@Resource(这个注解属于J2EE的)的标签,默认是按照byName方式注入的

@Autowired

原文:https://www.cnblogs.com/SmilingEye/p/11178812.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!