[SpringBoot]接口的多实现:选择性注入SpringBoot接口的实现类
在SpringBoot中,你可以使用@Primary
注解或@Qualifier
注解来选择性地注入接口的实现类。
- 使用
@Primary
注解:
如果你想要将一个特定的实现类声明为主要的(primary),可以在该实现类的类定义上添加@Primary
注解。Spring将会使用标记为@Primary
的bean作为该接口的注入候选,除非@Qualifier
被用于更明确地选择一个实现。
@Service
@Primary
public class FirstServiceImpl implements MyService {
// ...
}
@Service
public class SecondServiceImpl implements MyService {
// ...
}
@Autowired
private MyService myService;
在这个例子中,myService
将会被注入FirstServiceImpl
的实例,因为FirstServiceImpl
被标记为主要的实现。
- 使用
@Qualifier
注解:
如果你想在注入点通过特定的名字来选择实现,可以使用@Qualifier
注解和@Autowired
注解一起使用。
@Service
public class FirstServiceImpl implements MyService {
// ...
}
@Service
public class SecondServiceImpl implements MyService {
// ...
}
@Autowired
@Qualifier("secondServiceImpl")
private MyService myService;
在这个例子中,myService
将会被注入SecondServiceImpl
的实例,因为我们通过@Qualifier
指定了bean的名字。注意,这里的bean名字默认是类名的首字母小写,除非通过@Service("customName")
或@Component("customName")
等注解指定了不同的名称。
评论已关闭