@Primary注解是Spring框架中用于解决自动装配冲突的注解。当存在多个类型相同的Bean时,如果没有使用@Qualifier注解或者@Qualifier注解没有指定Bean的名称,Spring框架将无法判断应该使用哪个Bean进行注入。此时,可以使用@Primary注解来指定默认的Bean。
@Primary注解可以用于在多个实现类中指定默认的实现类。当存在多个实现类时,Spring框架将默认选择带有@Primary注解的实现类进行自动装配。
下面是一个使用@Primary注解的示例:
@Service
@Primary
public class UserRepositoryImpl implements UserRepository {
public Optional<User> findById(Long id) {
// Implementation...
}
// Other methods...
}
在上面的示例中,@Primary注解用于指定UserRepositoryImpl为默认的实现类。如果其他Bean需要自动装配UserRepository接口,而没有指定具体的实现类,Spring框架将使用带有@Primary注解的UserRepositoryImpl进行自动装配。
需要注意的是,@Primary注解只能指定一个默认的Bean。如果有多个类型相同的Bean,而且多个Bean都带有@Primary注解,Spring框架将抛出异常。因此,使用@Primary注解时应该慎重考虑。