在Spring中使用@Bean和@Component的名称和别名

jvlzgdj9  于 2023-01-04  发布在  Spring
关注(0)|答案(3)|浏览(668)

我们如何定义
(a)单名
B)多个姓名(别名)
使用@Bean和@Component标注?
在XML中,我们这样定义:
对于单个名称:

<bean name="accountService" autowire="constructor" class="com.wiley.beginningspring.ch2.AccountServiceImpl" autowire-candidate="false">
</bean>

对于别名:

<bean name="accountService,a,b" autowire="constructor" class="com.wiley.beginningspring.ch2.AccountServiceImpl" autowire-candidate="false">
</bean>

但是@Bean和@Component(或@Service、@Repository)又如何呢?

2mbi3lxu

2mbi3lxu1#

这仍然是一个功能请求https://jira.spring.io/browse/SPR-6736
除了@Bean

@Configuration
public class Config {

  @Bean(name = { "accountService", "acc" })
  public AccountServiceImpl cccountServiceImpl() {
    return new AccountServiceImpl();
  }

}
4ktjp1zp

4ktjp1zp2#

bean名称接受字符串数组,所以这是可行的。@Bean({"b1", "b2"}

hec6srdp

hec6srdp3#

除了可以从@Component(或其派生)注解中为bean给予名称之外,还可以使用@Qualifier指定一个别名:

@Component("foo")
@Qualifier("bar")
public class OtherBean {

    public String doIt() {
        return "now";
    }
}

不可能使用多个@Qualifier注解。
现在您可以使用“foo”和“bar”来引用该bean。

相关问题