本文主要是介绍【spring】@Primary注解学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
@Primary介绍
@Primary
是 Spring 框架中的一个注解,用于在多个相同类型的 bean 中指定一个默认的 bean。当 Spring 容器在自动装配时遇到类型冲突,即存在多个相同类型的 bean 时,如果没有使用 @Qualifier
或其他方式指定具体的 bean,Spring 会自动选择标记有 @Primary
的 bean 进行注入。
@Primary源码
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Primary {}
源代码截图
@Primary属性介绍
没有属性,哈哈!!
@Primary注解使用场景
-
默认 bean 选择:当 Spring 容器中有多个相同类型的 bean 时,如果不指定具体的 bean,Spring 在自动装配时可能会因为歧义而无法确定应该注入哪个 bean。使用
@Primary
可以指定一个 bean 作为默认选择,这样在没有其他指定的情况下,Spring 会自动注入这个 bean。 -
简化配置:在某些情况下,你可能希望在多个相同类型的 bean 中指定一个默认的 bean,以便在大多数情况下不需要显式指定 bean。使用
@Primary
可以简化配置,减少代码的复杂性。 -
与
@Qualifier
结合使用:在某些情况下,你可能希望在多个相同类型的 bean 中指定一个默认的 bean,但在某些特殊情况下需要使用其他 bean。使用@Primary
可以指定一个默认的 bean,而在特殊情况下使用@Qualifier
来指定具体的 bean。 -
在配置类中使用:除了在 bean 的属性或构造函数上使用
@Primary
,你还可以在配置类中使用@Primary
来指定 bean 的名称或限定符,以便在其他 bean 中使用。 -
与
@Component
、@Service
、@Repository
等注解结合使用:在定义 bean 时,可以使用@Primary
来指定一个 bean 作为默认选择,以便在其他 bean 中使用。 -
在
@Bean
注解中使用:在@Configuration
类中,你可以使用@Bean
注解来定义 bean,并使用@Primary
来指定 bean 作为默认选择,以便在其他 bean 中使用。
@Primary测试示例代码
示例代码 一:多个实现类的自动装配
@Service
public class DefaultEmailSender implements EmailSender {// ...
}@Service
public class SmsEmailSender implements EmailSender {// ...
}@Configuration
public class AppConfig {@Bean@Primarypublic EmailSender emailSender() {return new DefaultEmailSender();}@Beanpublic EmailSender smsEmailSender() {return new SmsEmailSender();}
}
示例代码 二:配置类中的方法注入
@Configuration
public class WebConfig {@Beanpublic WebService webService() {return new WebService();}@Bean@Primarypublic SecureWebService secureWebService() {return new SecureWebService();}
}
示例代码 三:优先级链的使用
@Service
@Profile("dev")
public class DevNotificationService implements NotificationService {// ...
}@Service
@Primary
@Profile("prod")
public class ProdNotificationService implements NotificationService {// ...
}
在这个例子中,DevNotificationService
将在开发环境(dev
profile)中作为首选,而ProdNotificationService
将在生产环境(prod
profile)中作为首选。
这篇关于【spring】@Primary注解学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!