前面讲到了使用 XML 的方式提供元数据,如果使用注解的方式,如何提供 qualifier 的元数据?
    其实很简单,在声明 bean 的时候直接使用上限定符注解就可以了。

    比如:

    1. @Component
    2. @Qualifier("Action")
    3. public class ActionMovieCatalog implements MovieCatalog {
    4. // ...
    5. }
    6. @Component
    7. @Genre("Action")
    8. public class ActionMovieCatalog implements MovieCatalog {
    9. // ...
    10. }
    11. @Component
    12. @Offline
    13. public class CachingMovieCatalog implements MovieCatalog {
    14. // ...
    15. }

    :::tips 需要注意的是:如果是自定义的限定符注解,需要将注解上的 @Target 添加上对应的类型,比如 ElementType.METHOD ,因为在声明 bean 的时候需要用到类上、或则方法上 :::

    在使用 @Bean 声明的时候,同样也是使用对应的限定符注解,比如

    1. @Bean
    2. @Genre("Comedy")
    3. public MovieCatalog movieCatalog(){
    4. return new SimpleMovieCatalog2();
    5. }

    :::info 与大多数基于注解的替代方案一样,请记住,注解元数据是与类定义本身绑定的,而 XML 的使用允许同一类型的多个 Bean 在其限定符元数据中提供变化,因为该元数据是按实例而不是按类提供的。 :::