java - 调用 Spring bean 的函数接口
问题描述
我想映射特定类型来触发 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)
我是否应该静态加载 Spring bean 以调用静态方法:
private static final MySpringService mySpringService = ApplicationInitializer.getAppContext().getBean(MySpringService.class);
还是没有静态初始化 Spring bean 的更好?
解决方案
我会InitializingBean
在定义 Map 的 Bean 上使用 Spring 的接口。然后你@Autowire
在MySpringService
你的豆子里。
最后,在afterPropertiesSet()
方法中,放置您的 Map 初始化代码,但使用 AutowiredMySpringService
代替来注册您的方法调用,因此您不需要从静态上下文调用 Spring bean。
推荐阅读
- python - 将整个文本作为字符串读取,而不是每个段落
- angular - 行为主体的角度/rxjs对象不返回值
- ruby-on-rails - 是否可以使用 URL 强制下载?该文件不在我的 Rails 中
- android - Tensorflow Lite - 输入形状必须是 5 维错误
- javascript - 如何测试通过道具钻孔发送的函数的点击事件
- c++ - 如何创建生成文件以在 sublime text 3 中查找和运行 C++ 头文件和类文件?
- react-native - 防止在 React Native 快速刷新时重置 Redux 状态(expo cli)
- excel - VBA - 查询表 - 从谷歌表中获取数据
- reactjs - 如何使用 React 创建 Spotify 播放列表?
- html - CSS菜单需要在其他地方点击消失