调用Spring bean的函数接口

时间:2019-01-21 14:15:36

标签: java spring java-8 functional-interface

我想映射特定类型以触发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 :(得分:2)

我将在定义地图的Bean上使用Spring的InitializingBean接口。 然后,您在豆中@Autowire MySpringService

最后,在afterPropertiesSet()方法中,放置Map初始化代码,但是使用自动连接的MySpringService来注册方法调用,因此您无需从静态上下文中调用Spring bean