根据配置决定是否加载
- Spring中可以根据配置来决定一个类是否加载
- 比如一个接口有两个实现,那么直接
@Autowired
是不知道要加载哪个的; - 如果在类注册到容器的时候,只注册需要被使用的那个;
- 那么就可以顺利关联上;
- 因为只有一个实现类被加载到了Spring容器中;
- 上代码
@Service
@Slf4j
@ConditionalOnProperty(
value = {"mozi.grpc.enable"},
havingValue = "true",
matchIfMissing = true)
public class HandlerGrpcDeployServiceImpl implements HandlerDeployService {}
- 可见,只有
mozi.grpc.enable = true
时,Spring才会将这个实现类加载到容器中; - 然后,@Autowired就会自动匹配上接口的这个实现类;