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 卸载到文件中)。此外,使用会话也无济于事。

这样的事情会有所帮助: http://www.masterspringboot.com/security/authentication/securing-spring-boot-with-in-memory-basic-authentication

我怎样才能完成这样的设计?

我的想法是简单地使用微服务并单独启动它,但我想确认在单个 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

可以使用搜索引擎找到源代码示例...