戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注
[查看视频教程]
源码:
1 @org.springframework.core.annotation.AliasFor("name") 2 java.lang.String[] value() default {}; 3 4 @org.springframework.core.annotation.AliasFor("value") 5 java.lang.String[] name() default {};
@Bean中的name和value属性 和 配置文件中的bean标签的name属性有同样的功能。
@Bean配置的类的默认id是方法的名称,但是我们可以通过value或者name给这个bean取别名。
注意:value和name属性不能并存。 而且如果配置了value或者name,那么我们将无法在通过方法名称获取这个bean了。
例如:
1 //配置ArticleService对象 2 @Bean(value="aservice") 3 //@Bean(name="aservice") 4 public ArticleService articleService(){ 5 ArticleService articleService = new ArticleService(); 6 //注入对应的属性 7 articleService.setArticleDAO(articleDAO()); 8 articleService.setAutorDAO(authorDAO()); 9 return articleService; 10 }
我们可以通过下面的方式获取service对象:
通过类型获取:
1 ArticleService bean = ac.getBean(ArticleService.class);
通过方法名称获取:
如果配置了value或者name,那么下面的操作会失效
1 ArticleService bean = (ArticleService) ac.getBean("articleService");
通过别名获取:
value和name配置别名,但是两个属性不能共存,也不能使用特殊符号,也不能同时配置多个别名
1 ArticleService bean = (ArticleService) ac.getBean("aservice");