首页 > 系统相关 >java如何定义一个全局变量(内存中)

java如何定义一个全局变量(内存中)

时间:2024-09-09 20:24:56浏览次数:4  
标签:java name Person age person 内存 import 全局变量 public

前言

java如何定义一个全局变量(内存中),项目启动时,通过读取配置文件来构建一个实体类对象,然后在之后可以直接使用,而不是每次使用都要进行构建

前置准备

实体类结构

package cn.daenx.demo;

import lombok.Data;
@Data
public class Person {
    private  String info;
}

配置文件

spring:
  profiles:
    active: dev

test:
  name: daen
  age: 18

方式一

新建一个类

package cn.daenx.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Component
public class MyTestCom {
    private static String name;
    private static Integer age;

    @Value("${test.name}")
    public void setName(String name) {
        MyTestCom.name = name;
    }

    @Value("${test.age}")
    public void setAge(Integer age) {
        MyTestCom.age = age;
    }


    @Bean
    public Person doInit() {
        Person person = new Person();
        System.out.println("@Bean初始化");
        person.setInfo("姓名:" + name + ",年龄:" + age);
        return person;
    }
}

使用

package cn.daenx.demo.controller;

import cn.daenx.demo.Person;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

@RestController
@RequestMapping("/test")
public class TestController {
    @Resource
    private Person person;

    @GetMapping(value = "/02")
    @ResponseBody
    private String req02() {
        System.out.println("02");
        return person.getInfo();
    }
}

方式二

新建一个类

package cn.daenx.demo;
public class GlobalInfo {

    private static Person person;

    public static Person getPerson() {
        return person;
    }

    public static void setPerson(Person person) {
        GlobalInfo.person = person;
    }

}

新建一个实体类,并实现ApplicationRunner

package cn.daenx.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Component
public class AppRunImpl implements ApplicationRunner {
    @Value("${test.name}")
    private String name;

    @Value("${test.age}")
    private Integer age;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("ApplicationRunner初始化");
        Person person = new Person();
        person.setInfo("姓名:"+name + ",年龄:" + age);
        GlobalInfo.setPerson(person);
    }
}

使用

package cn.daenx.demo.controller;

import cn.daenx.demo.Person;
import cn.daenx.demo.GlobalInfo;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

@RestController
@RequestMapping("/test")
public class TestController {

    @GetMapping(value = "/01")
    @ResponseBody
    private String req01() {
        System.out.println("01");
        return GlobalInfo.getPerson().getInfo();
    }
}

标签:java,name,Person,age,person,内存,import,全局变量,public
From: https://www.cnblogs.com/daen/p/18405266

相关文章

  • Java中String类的学习
    String类目录String类字符串常量常见的方法正则表达式字符通配符次数通配符其他通配符StringBuffer和StringBuilder字符串常量我们俗称的字符串常量,其实程序之中不会提供有字符串这样的“基本数据类型”,提供的只是一个String类,所以任何使用""定义的字符串常量实际上描述的都......
  • 【Java毕设最新选题推荐2025】基于springboot的酒店管理系统
    摘 要21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确、快速、完善,并能提高工作管理效率,促进其发展。论文主要是对酒店管理系统......
  • [Java并发]sleep
    Thread.sleep是Java中用来让当前线程进入休眠状态一段时间的方法。调用Thread.sleep后,线程会进入“等待”状态,直到指定的时间过去,然后自动被唤醒继续执行。但Thread.sleep并不是在其他线程的干预下被唤醒的,而是依赖以下几个条件之一来结束休眠:时间到达:当指定的睡眠时间......
  • Java代码审计篇 | ofcms系统审计思路讲解 - 篇1 | 环境搭建、路由机制
    文章目录Java代码审计篇|ofcms系统审计思路讲解-篇1|环境搭建、路由机制1.前言2.项目环境搭建3.项目路由机制3.1.1)先搜索pom.xml文件,看看使用了什么框架3.2.2)确定是否是spring的路由机制3.3.3)确定自写路由机制的特点3.4.4)从前端探索3.5.5)断点调试3.6.6)寻......
  • 深入理解java虚拟机---第 3 章 垃圾收集器与内存分配策略
    3.2.2可达性分析算法当前主流的商用程序语言(Java、C#,上溯至前面提到的古老的Lisp)的内存管理子系统,都是通过可达性分析(ReachabilityAnalysis)算法来判定对象是否存活的。这个算法的基本思路就是通过一系列称为“GCRoots”的根对象作为起始节点集,从这些节点开始,根据引用关......
  • Java单例设计模式(懒汉式与饿汉式)
    思考这样一个问题如果要在类的外部有且只有一个对象,我们需要怎么做呢首先要保证构造方法私有化,保证不能用new的方法来在外部创建对象一.单例设计模式单例设计模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来访问该实例。无论是懒汉式还是饿汉......
  • Java JVM 零基础,详细讲解一(基础结构)。
    在Java编程的世界里,JVM是一个至关重要的存在。如果你是一个零基础的开发者,想要深入了解JVM,那么这篇博客将为你提供超详细的讲解。一、什么是JVM?JVM(JavaVirtualMachine,Java虚拟机)是一种用于计算设备的规范,它是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计......
  • 《Java 归并排序:高效稳定的排序算法》
      一、归并排序简介介绍归并排序是一种基于分治思想的经典排序算法,适用于各种规模的数据排序任务。 二、算法原理(一)分治策略将未排序数组分割成两个子数组,递归地对子数组进行排序,最后合并成有序数组。(二)关键步骤1.分割阶段:将数组分成两个子数组,通常是平均分割。2.......
  • 【Java基础】
    Java基础1.变量与数据类型在Java中,变量用于存储数据,每个变量都有类型。Java的数据类型分为两类:基本数据类型(如int,double,char,boolean)引用数据类型(如String,数组,对象)示例:publicclassMain{publicstaticvoidmain(String[]args){//......
  • [Java面向对象]static方法
    static方法不能重写在Java中,静态方法不能被重写。静态方法属于类本身,而不是类的实例。因此,当你在子类中定义一个与父类静态方法同名的方法时,这不是重写,而是隐藏。publicclassclassA{publicstaticvoidmethod(){System.out.println("classA的静态方法");......