Hable acerca de cómo comenzar a cargar variables globales en SpringBoot

prefacio

Es muy común necesitar cargar variables globales, como tomar la configuración general de inicialización del sistema, etc.

Spring Boot puede implementar la interfaz CommandLineRunner o ApplicationRunner para permitir que se ejecute cierto código después de que se inicia la aplicación Spring Boot. Por lo tanto, la carga de variables globales desde la base de datos al inicio se puede implementar en el método run() de estas interfaces.

Pasos de implementación

1. Defina una clase de variable global, de la siguiente manera:

@Component
public class GlobalVariables {

    private static Map<String,String> globalMap = new HashMap<>();

    public static String getVariable(String key) {
        return globalMap.get(key);
    }

    @PostConstruct
    public void loadGlobalVariables() {
        List<Variable> variables = ... //从数据库加载所有变量
        for (Variable variable: variables) {
            globalMap.put(variable.getName(), variable.getValue());
        }
    }
}

En esta clase, las variables globales se definen como un objeto de mapa estático, donde la clave es el nombre de la variable y el valor es el valor de la variable.

En el método anotado PostConstruct, cargue todas las variables de la base de datos y colóquelas en el mapa global

2. Llame al método GlobalVariables.loadGlobalVariables() al inicio

Se puede realizar implementando la interfaz CommandLineRunner o ApplicationRunner

@SpringBootApplication
public class MyApplication implements CommandLineRunner {

    @Autowired
    private GlobalVariables globalVariables;

    @Override
    public void run(String... args) throws Exception {
        globalVariables.loadGlobalVariables();
    }

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

En la clase MyApplication, la interfaz CommandLineRunner se implementa y se inyecta en el objeto GlobalVariables

Llame al método GlobalVariables.loadGlobalVariables() en el método run() para cargar todas las variables globales de la base de datos al inicio

Análisis de principios

La clase GlobalVariables usa la anotación @PostConstruct, lo que significa que se llamará a este método después de que se cree e inicialice la instancia de la clase. En el método loadGlobalVariables() de esta clase, cargamos todas las variables globales de la base de datos y las almacenamos. Guárdelo en el Mapa modificado estático

La clase MyApplication implementa la interfaz CommandLineRunner y la inyecta en el objeto GlobalVariables. Por lo tanto, después de que se inicie la aplicación, Spring llamará al método de ejecución y ejecutará el método GlobalVariables.loadGlobalVariables() para cargar variables globales de la base de datos y almacenarlas en el archivo global. en el mapa

De esta forma, podemos utilizar estas variables globales en toda la aplicación.

Supongo que te gusta

Origin blog.csdn.net/weixin_42559574/article/details/130073604
Recomendado
Clasificación