Интерфейсы функций, вызывающие Spring bean - PullRequest
0 голосов
/ 21 января 2019

Я хочу отобразить определенные типы для запуска методов Spring,

Я сохраняю карту интерфейсов функций по ключу, функции будут вызывать метод Spring Services, но у меня есть проблема, что он должен быть статическим, например:

 private Map<Pair<Type, Boolean>, Function<User, Boolean>> functionInterfaces = new HashMap<>();
 {
    functionInterfaces .put(Pair.of(Type.MY_TYPE, Boolean.TRUE), MySpringService::myTypeMethod);
 }

Так что мой метод должен быть статическим

 public static boolean myTypeMethod(User user)

Стоит ли загружать Spring bean статически для вызова статического метода:

private static final MySpringService mySpringService = ApplicationInitializer.getAppContext().getBean(MySpringService.class);

Или лучше без статической инициализации Spring bean-компонентов?

1 Ответ

0 голосов
/ 21 января 2019

Я бы использовал InitializingBean интерфейс Spring в Бине, где определена ваша Карта.Затем вы @Autowire ваш MySpringService в своем бобе.

Наконец, в методе afterPropertiesSet() поместите код инициализации вашей карты, но вместо этого используйте Autowired MySpringService, чтобы зарегистрировать вызов метода, так что выне нужно вызывать bean-компонент Spring из статического контекста.

...