侧边栏

@Autowired

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方式注入的

posted on 2019-07-12 22:40  SmilingEye  阅读(454)  评论(0)    收藏  举报

导航