Spring中注解Bean时类名的问题
@ComponentpublicclassDBUtil{}@AutowiredpublicvoidsetDataSource(@Qualifier("dBUtil")DB...
@Component
public class DBUtil { }
@Autowired
public void setDataSource( @Qualifier("dBUtil")DBUtil dataSource) {
this.dataSource = dataSource;
}
按照上述id注解后,会报找不到DBUtil类型的bean的错,而
@Component
public class DaBUtil { }
@Autowired
public void setDataSource( @Qualifier("daBUtil")DBUtil dataSource) {
this.dataSource = dataSource;
}
则可以正常运行,求解释
在不改变类名的前提下如何才能找到正确的bean的id
后面只是在D后面加了小写的a,而加别的大写字母都会报同样的错,工厂在生成这种类类型的id是什么 展开
public class DBUtil { }
@Autowired
public void setDataSource( @Qualifier("dBUtil")DBUtil dataSource) {
this.dataSource = dataSource;
}
按照上述id注解后,会报找不到DBUtil类型的bean的错,而
@Component
public class DaBUtil { }
@Autowired
public void setDataSource( @Qualifier("daBUtil")DBUtil dataSource) {
this.dataSource = dataSource;
}
则可以正常运行,求解释
在不改变类名的前提下如何才能找到正确的bean的id
后面只是在D后面加了小写的a,而加别的大写字母都会报同样的错,工厂在生成这种类类型的id是什么 展开
1个回答
展开全部
这是spring自动扫面bean 默认命名的约定,如果前两位是大写字母 其默认名和类名一致 ,也就是说,改成如下
@Component
public class DBUtil { }
@Autowired
public void setDataSource( @Qualifier("DBUtil")DBUtil dataSource) {//修改 @Qualifier("DBUtil") this.dataSource = dataSource;
}
或者给DBUtil添加bean name
@Component("dBUtil")
public class DBUtil...
@Component
public class DBUtil { }
@Autowired
public void setDataSource( @Qualifier("DBUtil")DBUtil dataSource) {//修改 @Qualifier("DBUtil") this.dataSource = dataSource;
}
或者给DBUtil添加bean name
@Component("dBUtil")
public class DBUtil...
追问
谢谢朋友,这是个办法,可是我更想知道我那种写法生成的id是什么
是什么样的
追答
不用谢呀
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询