2.3@Bean的value和name属性

戴着假发的程序员出品  抖音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");

 

posted @ 2020-10-07 08:54  戴着假发的程序员0-1  阅读(2036)  评论(0编辑  收藏  举报