项目中使用了其他项目中的服务,当服务不可用或者报错的时候,项目启动不了,需要解除强依赖
例如之前的写法:
@Configuration public class EpasBeanConfig { @Bean public GroupOrganizationService getGroupOrganizationService(){ return EpasClientFactory.createClient(GroupOrganizationService.class,Constants.EPAS_USER_BASIS_APP_KEY); } @Bean public DepartmentService getDepartmentService(){ return EpasClientFactory.createClient(DepartmentService.class, Constants.EPAS_USER_BASIS_APP_KEY); } }
@Autowired private GroupOrganizationService groupOrganizationService; @Autowired private DepartmentService departmentService;
当服务不可用的时候,项目启动失败
修改后的方法:
@Configuration public class EpasBeanConfig { @Bean @Lazy public GroupOrganizationService getGroupOrganizationService(){ return EpasClientFactory.createClient(GroupOrganizationService.class, Constants.EPAS_USER_BASIS_APP_KEY); } @Bean @Lazy public DepartmentService getDepartmentService(){ return EpasClientFactory.createClient(DepartmentService.class, Constants.EPAS_USER_BASIS_APP_KEY); } }
GroupOrganizationService groupOrganizationService = AppContextHolder.getContext().getBean(GroupOrganizationService.class);