Java: обнаружение слишком большого количества внедренных зависимостей в службах - PullRequest
0 голосов
/ 09 марта 2020

есть ли возможность автоматически обнаруживать, если сервис вводит слишком много сервисов?

toolchain: java + пружинная загрузка + sonarqube + gitlabci

public class TooMuchService {
  // injection
  private AService aService;
  private BService bService;
  private CService cService;
  private DService dService;
  private EService eService;
  private FService fService;
  private GService gService;
}

1 Ответ

1 голос
/ 09 марта 2020

Вы можете использовать BeanPostProcessor, как в этой статье :

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

public class CustomBeanPostProcessor implements BeanPostProcessor 
{
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException 
    {
        System.out.println("Called postProcessBeforeInitialization() for :" + beanName);
        return bean;
    }

    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException 
    {
        System.out.println("Called postProcessAfterInitialization() for :" + beanName);
        return bean;
    }
}

Таким образом, из Object bean вы можете получить имя класса для каждого экземпляра объекта. После этого вы можете использовать отражение, чтобы искать аннотации, добавлять их и проверять, является ли число приемлемым для вас.

Но я не стал бы беспокоиться об этом числе, оно не влияет на производительность.

...