Spring静态初始化bean

2023-11-30

嘿, 在 Spring 中应该如何处理静态初始化?我的意思是,我的 bean 有一个静态初始化

private static final Map<String, String> exceptionMapping = ErrorExceptionMapping.getExceptionMapping();

我需要注意 ErrorExceptionMapping 之前已加载。我试过这个:

<bean id="errorExceptionMapping" class="cz.instance.transl.util.ErrorExceptionMapping" />
<bean id="validateService" class="cz.instance.transl.services.ValidateService" depends-on="errorExceptionMapping" >

但我得到了

java.lang.NoClassDefFoundError: Could not initialize class cz.instance.transl.util.ErrorExceptionMapping

如果我省略静态初始化或从 bean 的方法中调用该方法,那当然没问题。我认为初始化回调(affterPropertiesSet())在这里没有帮助。


Having static对其他 bean 的依赖不是 Spring 的方式。

不过,如果你想保留它static,你可以延迟初始化它 - 在这种情况下depends-on可以强制执行正确的初始化顺序。

EDIT:通过延迟加载,我的意思是这样的(我在这里使用 Holder 类习惯用法的延迟初始化,也可以使用其他延迟初始化习惯用法):

private static class ExceptionMappingHolder {
    private static final Map<String, String> exceptionMapping = 
        ErrorExceptionMapping.getExceptionMapping(); 
}

and use ExceptionMappingHolder.exceptionMapping代替exceptionMapping.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring静态初始化bean 的相关文章

  • Java静态混乱

    我正在使用 Java 我以前曾使用过 C 我正在考虑 Java 中的静态用法 如果我在类中创建静态方法和变量 为什么我也可以通过对象访问它们 Example class Test static int count 0 int id stat
  • Spring - 如何在不匹配列名的情况下使用 BeanPropertyRowMapper

    我正在开发一个应用程序 该应用程序已使用行映射器从纯 JDBC 转换为 Spring 模板 我遇到的问题是数据库中的列与属性名称不匹配 这阻止我使用BeanPropertyRowMapper容易地 我看到一些关于在查询中使用别名的帖子 这会
  • 为什么 html 页面没有在 thymeleaf 中显示?

    我在用着spring boot和thymeleaf查看引擎 问题是控制器没有显示正确的 html 页面 并且总是显示Whitelabel Error Page 控制器 package com example controller impor
  • 如何使用 Spring @Configuration 而不是 XML 配置来检索 JNDI

    我已经开始开发一个新的 Spring 3 2 4 应用程序 并尝试使用基于 Java 的配置 而不是像我过去使用的那样使用 XML 文件 但是 我在过渡时遇到了困难 使用 XML 我将其编码如下
  • 具有空值的 Spring MVC @Path 变量

    Am developing an application using spring boot In Resource am using path variable PathVariable annotation and Request Pa
  • Spring引导@Configurable

    我正在尝试配置Autowired在 Spring Boot 应用程序下的非 Spring 托管类中 我在部署在 tomcat 服务器下的 Web 应用程序下成功运行了这个 但是当我想在 Spring Boot 下运行它时 没有任何效果 我制
  • JoinPoint 匹配 EntityManager 方法

    我正在尝试拦截对find中的方法实体管理器 public Map
  • HQL 类似运算符,用于不区分大小写的搜索

    我正在使用 Jquery 实现自动完成功能 当我输入名称时 它会从数据库中获取记录 数据库中存储的记录是大写字母和小写字母的混合 我编写了一个 HQL 查询 它可以区分大小写地获取记录 但我需要不考虑大小写的记录 这是查询 List
  • Maven 未运行 Spring Boot 测试

    我有一个要测试的 Spring Boot REST API 我可以在 Eclipse 中手动运行测试 无需 Maven 并通过将应用程序作为 JUnit 测试运行 它运行良好并显示结果 但是mvn test正如您将在下面发现的那样 它不起作
  • 如何为连接表中的其他属性创建多对多 Hibernate 映射?

    我需要一个多对多的休眠映射需要 3 个连接 我试图找到一个没有中间实体的解决方案 例如LecturerCourse 我的数据库中的讲师和课程表之间存在多对多关系 一门课程可以由多名讲师讲授 而一名讲师可以讲授多门课程 我事先存储了课程 但是
  • Spring MVC 3.0中使用下划线绑定请求参数

    考虑以下要求 请求参数必须使用 Spring MVC 3 0 绑定到对象 请求参数包含下划线 例如http myurl 80 x param one 1 param two 2 这些参数应绑定到以下对象 class MyObject pri
  • Spring Stomp over Websocket:流式传输大文件

    我的SockJs客户端在网页中 发送帧大小为16K的消息 消息大小限制决定了我可以传输的文件的最大大小 以下是我在文档中找到的内容 Configure the maximum size for an incoming sub protoco
  • 如何在 Spring MongoDB 聚合上投影 DBRef?

    我在 MongoDB shell 中完成了以下聚合 以获取每个用户每种类型的警报数量 db getCollection alerts aggregate unwind son group id son son level level cou
  • 使用 Jersey-Spring 在 Jersey 中自动装配 Spring 依赖关系时出现问题

    我正在尝试使用 Jersey Spring 在我的 Jersey 应用程序中进行 DI 设置 然而 当我点击一条路线时 我收到 500 个错误 并看到下面的堆栈跟踪 No beans found Resolution failed for
  • CrudRepository 未从 schema.sql 读取数据

    Setup 我有一个带有简单 Entity Customer 对象和 CustomerRepository 的 spring boot 应用程序 我想用描述的测试数据预加载数据库在我的另一个问题中 https stackoverflow c
  • @Order可以应用于@Transactional吗?

    我有一个用 Transactional 和另一个自定义注释 Custom 注释的方法 此自定义注释包含在建议中 操作顺序如下 1 Transactional method gets called 2 Sees Transactional a
  • 如何配置 Spring-WS 以使用 JAXB Marshaller?

    感谢您到目前为止对此的帮助 我正在更新问题 因为我没有显示我需要的所有内容 并显示了建议的更改 肥皂输出仍然不是我想要的 servlet xml
  • 具有 CRUD 功能的基于 Spring Web 的管理工具

    在 PHP Symfony 世界里有一个工具叫 Sonata Adminhttps sonata project org https sonata project org 基于 AdminLTE 模板 这是一款一体化管理工具 具有登录 菜单
  • 在spring data jpa中实现动态数据源

    我有 N 个服务器 N 个数据库和 N 个配置 看下面的场景 因此 对于每个请求 我都需要根据配置访问服务器和数据库 spring data jpa如何实现动态数据源 你可以试试抽象路由数据源 https docs spring io sp
  • Spring中什么时候触发ContextRefreshedEvent?

    我知道当 ApplicationContext 完全加载时它会被触发一次 但是之后在运行时怎么办 Refreshed 一词意味着它将在刷新时触发 但我想知道 Spring 是否符合 ApplicationContext 刷新的资格 跟进问题

随机推荐