首页 > 其他分享 >springboot初始化配置的方法[详细版]

springboot初始化配置的方法[详细版]

时间:2025-01-11 22:03:21浏览次数:3  
标签:初始化 springboot initTest springframework 详细 import org public

目录

一,前言

在日常开发过程中,我们时长需要对一些变量或者属性做初始化操作,设置属性值,比如minio的初始化,map的初始赋值等,那么在一个springboot我们争对不同的场景应该如何去做这一操作呢,接下来我们一一道来。

二,正文

非spring bean 的初始化

1. 静态代码块初始化操作

在开发过程中,如果对于一些静态属性的初始化我们可以使用静态代码块来进操作,静态代码块的特点是总的只加载一次,而且只能加载静态变量,所以对于一些静态属性我们可以使用静态代码块来做操作。
在这里插入图片描述

package org.example.service.serviceImpl;

import org.example.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;

/**
 * @author: poet_Dai
 * @create: 2025-01-11 16:15
 * @Description:
 */
@Service
public class InitTest {
    private  static ArrayList<String> dataList;
    @Autowired
    private StudentService studentService;
    static {
        dataList=new ArrayList<>();
        dataList.add("1");
        dataList.add("2");
        dataList.add("3");
        System.out.println("初始化完毕!");
    }
}

2. 构造代码块

也有这样一个场景,我需要在每一个类实列化的时候就自动附上初始值,对于这种场景,如果我们每一次使用的时候再去赋值就显得比麻烦了,这时就需要使用构造代码块,特点,每一次实列化的时候执行一次代码块的内容。

package org.example.service.serviceImpl;

import lombok.Data;
import org.example.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;

/**
 * @author: poet_Dai
 * @create: 2025-01-11 16:15
 * @Description:
 */
@Service
@Data
public class InitTest {
    private  static ArrayList<String> dataList;

    private LocalDate createDate;
    private LocalTime createTime;

    @Autowired
    private StudentService studentService;
	//构造代码块
    {
        createDate=LocalDate.now();
        createTime=LocalTime.now();
    }

    public static class Test{
         public static void main(String[] args) throws InterruptedException {
            InitTest initTest = new InitTest();
            System.out.println(String.format("final time :%s %s",
                    initTest.getCreateDate() ,initTest.getCreateTime()));
             //延时一秒钟
            Thread.sleep(1000);
            InitTest initTest1 = new InitTest();
            System.out.println(String.format("final time :%s %s",
                    initTest1.getCreateDate() ,initTest1.getCreateTime()));
        }
    }
}

执行结果:
在这里插入图片描述

spring bean的初始化

当我们需要对spring ioc容器中的bean对象做初始化是,就需要使用spring提供的一些接口和注解,以方便实现初始化功能,从而减少出错的概率。

准备环境

需初始化的类

package org.example.service.serviceImpl;

import lombok.Data;
import org.example.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;

/**
 * @author: poet_Dai
 * @create: 2025-01-11 16:15
 * @Description:
 */
@Service
public class InitTest {
    private String dateurl;
    
    private String flag;

}

使用的类

package org.example.service.serviceImpl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author: poet_Dai
 * @create: 2025-01-11 21:04
 * @Description:
 */
@Service
public class Tests {
    
    @Autowired
    private InitTest initTest;
  //测试方法
  public void TestInit(){
        String url = this.initTest.getDateurl();
        Boolean flag = this.initTest.getFlag();
        if (null != url && null != flag) {
            System.out.println("初始化url成功:" + this.initTest.getDateurl());
            System.out.println("初始化flag成功:" + this.initTest.getFlag());
        } else {
            System.out.println("初始化失败");
        }
    }
    
}

测试接口

package org.example.controller;

import org.example.service.serviceImpl.Tests;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author: poet_Dai
 * @create: 2025-01-11 21:11
 * @Description:
 */
@RestController
@RequestMapping("/test")
public class TestController {
    @Autowired
    private Tests tests;
    
    @GetMapping("/init")
    public void Test(){
        tests.TestInit();
    }
}

1.实现InitializingBean 接口

package org.example.service.serviceImpl;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author: poet_Dai
 * @create: 2025-01-11 21:04
 * @Description:
 */
@Service
public class Tests implements InitializingBean {

    @Autowired
    private InitTest initTest;

    @Override
    public void afterPropertiesSet() throws Exception {
    //初始化属性
        this.initTest.setDateurl("http://localhost:8080");
        this.initTest.setFlag(true);
    }

    public void TestInit(){
        String url = this.initTest.getDateurl();
        Boolean flag = this.initTest.getFlag();
        if (null != url && null != flag) {
            System.out.println("初始化url成功:" + this.initTest.getDateurl());
            System.out.println("初始化flag成功:" + this.initTest.getFlag());
        } else {
            System.out.println("初始化失败");
        }
    }


}

测试
在这里插入图片描述

2.使用@PostConstruct注解

package org.example.service.serviceImpl;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;

/**
 * @author: poet_Dai
 * @create: 2025-01-11 21:04
 * @Description:
 */
@Service
public class Tests {

    @Autowired
    private InitTest initTest;

    @PostConstruct
    public void Init() {
        this.initTest.setDateurl("http://localhost:8080");
        this.initTest.setFlag(true);
    }

    public void TestInit() {
        String url = this.initTest.getDateurl();
        Boolean flag = this.initTest.getFlag();
        if (null != url && null != flag) {
            System.out.println("初始化url成功:" + this.initTest.getDateurl());
            System.out.println("初始化flag成功:" + this.initTest.getFlag());
        } else {
            System.out.println("初始化失败");
        }
    }


}

测试:
在这里插入图片描述

3.实现CommandLineRunner方法,重写run方法

package org.example.service.serviceImpl;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.CommandLineRunner;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Service;

/**
 * @author: poet_Dai
 * @create: 2025-01-11 21:04
 * @Description:
 */
@Service
public class Tests implements CommandLineRunner {

    @Autowired
    private InitTest initTest;

    @Override
    public void run(String... args) throws Exception {
        this.initTest.setDateurl("http://localhost:8080");
        this.initTest.setFlag(true);
    }

    public void TestInit() {
        String url = this.initTest.getDateurl();
        Boolean flag = this.initTest.getFlag();
        if (null != url && null != flag) {
            System.out.println("初始化url成功:" + this.initTest.getDateurl());
            System.out.println("初始化flag成功:" + this.initTest.getFlag());
        } else {
            System.out.println("初始化失败");
        }
    }


}

测试:
在这里插入图片描述

4.实现ApplicationRunner接口,重写run方法

package org.example.service.serviceImpl;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Service;

/**
 * @author: poet_Dai
 * @create: 2025-01-11 21:04
 * @Description:
 */
@Service
public class Tests implements ApplicationRunner {

    @Autowired
    private InitTest initTest;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        this.initTest.setDateurl("http://localhost:8080");
        this.initTest.setFlag(true);
    }

    public void TestInit() {
        String url = this.initTest.getDateurl();
        Boolean flag = this.initTest.getFlag();
        if (null != url && null != flag) {
            System.out.println("初始化url成功:" + this.initTest.getDateurl());
            System.out.println("初始化flag成功:" + this.initTest.getFlag());
        } else {
            System.out.println("初始化失败");
        }
    }



}

测试:
在这里插入图片描述

5.监听ContextRefreshedEvent事件

package org.example.service.serviceImpl;


import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;

import org.springframework.stereotype.Service;

/**
 * @author: poet_Dai
 * @create: 2025-01-11 21:04
 * @Description:
 */
@Service
public class Tests {

    @Autowired
    private InitTest initTest;

    @EventListener
    public void Listen(ContextRefreshedEvent event) {
        this.initTest.setDateurl("http://localhost:8080");
        this.initTest.setFlag(true);

    }

    public void TestInit() {
        String url = this.initTest.getDateurl();
        Boolean flag = this.initTest.getFlag();
        if (null != url && null != flag) {
            System.out.println("初始化url成功:" + this.initTest.getDateurl());
            System.out.println("初始化flag成功:" + this.initTest.getFlag());
        } else {
            System.out.println("初始化失败");
        }
    }


}

测试:
在这里插入图片描述

三,结语:

以上是我罗列出来关于初始化配置的常用方法,除此之外还有许多其他的方法,但以上的配置基本能够满足日常的开发了,希望你阅读此篇之后对你有所帮助,加油!

标签:初始化,springboot,initTest,springframework,详细,import,org,public
From: https://blog.csdn.net/dfd_123456789/article/details/145078870

相关文章

  • 超详细Pycharm中添加Anaconda创建的环境(2025最新)
    Anaconda中创建新的环境打开Anaconda包下的AnacondaPrompt 在“>”输入condacreate-nnadiarpython=3.11,创建一个名为“nadiar”,Python版本为3.11的环境,回车“↲”开始运行condacreate-nnadiarpython=3.11输入y继续安装 安装完成   输入condaactivate......
  • 100_基于springboot的图书管理系统
    ......
  • Vue2+OpenLayers调用WMTS服务初始化天地图示例
    目录一、案例截图二、安装OpenLayers库三、WMTS服务详解四、完整代码五、Gitee源码一、案例截图二、安装OpenLayers库npminstallol三、WMTS服务详解WMTS(WebMapTileService)是一种标准的网络地图服务协议,用于提供基于瓦片的地图数据。它允许客户端请求地图的具......
  • 如何修改网站源码模板文件:详细指南
    修改网站源码模板文件是提升网站设计和用户体验的重要步骤。以下是详细的修改步骤和注意事项:备份网站文件:在进行任何文件修改之前,务必备份网站的所有文件和数据库。您可以使用FTP工具下载网站文件,或者通过网站托管商提供的备份功能进行备份。确保备份文件存储在安全的位置,以......
  • 2025毕设springboot 大学生志愿者信息管理系统论文+源码
    系统程序文件列表开题报告内容研究背景在当今社会,志愿服务已成为大学生参与社会实践、提升自我价值的重要途径。随着大学生志愿者队伍的不断壮大,如何高效、有序地管理这一庞大群体,成为摆在高校和社会组织面前的一大挑战。传统的志愿者管理方式往往依赖于纸质记录和人工调度......
  • 2025毕设springboot 大学生志愿者服务管理微信小程序的设计与实现论文+源码
    系统程序文件列表开题报告内容研究背景随着社会的不断进步和志愿服务精神的广泛传播,大学生作为社会的一股重要力量,积极参与各类志愿服务活动,不仅有助于个人成长,还能为社会带来积极影响。然而,传统的志愿者服务管理方式往往存在信息更新不及时、报名流程繁琐、志愿服务时长记......
  • springboot毕设 高校新生报道及宿舍分配平台 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高校招生规模的不断扩大,每年新生报道期间的各项管理工作变得日益复杂。传统的手工登记、分配宿舍等流程不仅效率低下,还容易出现信息错误和遗漏,给......
  • springboot毕设 基于O2O模式的外卖订餐系统 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和人们生活节奏的加快,O2O(OnlineToOffline)模式的外卖订餐系统逐渐成为人们日常生活中不可或缺的一部分。现代都市人的生活......
  • Google AI 智能体白皮书,超详细解读(内附下载)
    2AGI.NET|探索AI无限潜力,2AGI为您带来最前沿资讯。扫码加入2AGI技术社区!本文深入探讨了生成式AI智能体的核心组件、工作原理、关键技术及其广泛应用。文章从智能体的定义出发,详细介绍了其模型、工具和编排层的协同作用,以及认知架构的运作机制。同时,文章还讨论了如......
  • 可白嫖源码-Springboot+vue毕业论文管理系统(案例分析)
    摘 要随着Internet的发展,以网络为支撑的论文管理系统不但可以让学生随时随地提交论文,老师也可以通过电脑或者移动终端随时随地下载论文,对论文进行审核,有关单位部门的工作人员和导师也能随时获取相关信息进行毕业生论文的管理工作,相较于传统手工方式管理毕业生的论文,这种方式......