代码之家  ›  专栏  ›  技术社区  ›  Ori Marko

调用SpringBeans的函数接口

  •  3
  • Ori Marko  · 技术社区  · 5 年前

    我想映射特定类型以触发Spring方法,

    我按键保存函数接口的映射,函数将调用Spring服务方法,但我有一个问题,它必须是静态的,例如:

     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)
    

    我应该静态加载SpringBean以便调用静态方法:

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

    或者在没有静态初始化SpringBean的情况下有更好的方法吗?

    1 回复  |  直到 5 年前
        1
  •  2
  •   Xavier Gourmandin    5 年前

    我要用弹簧的 InitializingBean 在bean上定义映射的接口。 那么你 @Autowire 你的 MySpringService 在你的豆子里。

    最后,在 afterPropertiesSet() 方法,放置映射初始化代码,但使用自动连线 MySpRungService 相反,要注册方法调用,所以不需要从静态上下文调用SpringBean。