Spring Boot中如何启动所有控制器都可以访问的全局方法
How to initiate a global method that can be accessed by all controllers in Spring Boot
我想启动一个简单的 POJO,它在启动时(或 Spring 引导应用程序启动时)生成一个随机字符串数组。这个字符串数组必须在 Spring Boot 应用程序中的每个控制器之间共享,并且对于不同的控制器来说不能不同。 class 和(此共享 POJO 的)方法是 Spring 引导应用程序的内部,并且通过调用控制器方法中的 getter 来访问(仅)。
此外,我想避免使用 application.properties。最好的解决方案是 java-only(没有 H2 之类的数据库或将 POJO 卸载到文件中)。此外,使用会话也无济于事。
我怎样才能完成这样的设计?
我的想法是简单地使用微服务并单独启动它,但我想确认在单个 Spring 启动应用程序中是否还有其他我可以做的事情。
您可以创建一个包含您的值的单例 class:
public class Main {
public static void main(String[] args) {
DataHolder dataHolder = DataHolder.getInstance();
String[] arr = dataHolder.getArr();
}
}
class DataHolder {
private static DataHolder instance = null;
private String[] arr = new String[10];
public static DataHolder getInstance() {
if (instance == null)
instance = new DataHolder();
return instance;
}
private DataHolder() {
fillArray();
}
private void fillArray() {
// use this method to fill your array
}
public String[] getArr() {
return arr;
}
}
为了回答我自己的问题,解决方案是使用 mapDB 提供的 in-memory,并在 spring-boot 启动期间生成所有数据...
https://mvnrepository.com/artifact/org.mapdb/mapdb
可以使用搜索引擎找到源代码示例...
我想启动一个简单的 POJO,它在启动时(或 Spring 引导应用程序启动时)生成一个随机字符串数组。这个字符串数组必须在 Spring Boot 应用程序中的每个控制器之间共享,并且对于不同的控制器来说不能不同。 class 和(此共享 POJO 的)方法是 Spring 引导应用程序的内部,并且通过调用控制器方法中的 getter 来访问(仅)。
此外,我想避免使用 application.properties。最好的解决方案是 java-only(没有 H2 之类的数据库或将 POJO 卸载到文件中)。此外,使用会话也无济于事。
我怎样才能完成这样的设计?
我的想法是简单地使用微服务并单独启动它,但我想确认在单个 Spring 启动应用程序中是否还有其他我可以做的事情。
您可以创建一个包含您的值的单例 class:
public class Main {
public static void main(String[] args) {
DataHolder dataHolder = DataHolder.getInstance();
String[] arr = dataHolder.getArr();
}
}
class DataHolder {
private static DataHolder instance = null;
private String[] arr = new String[10];
public static DataHolder getInstance() {
if (instance == null)
instance = new DataHolder();
return instance;
}
private DataHolder() {
fillArray();
}
private void fillArray() {
// use this method to fill your array
}
public String[] getArr() {
return arr;
}
}
为了回答我自己的问题,解决方案是使用 mapDB 提供的 in-memory,并在 spring-boot 启动期间生成所有数据...
https://mvnrepository.com/artifact/org.mapdb/mapdb
可以使用搜索引擎找到源代码示例...