企业级信息系统开发——Spring Boot加载自定义配置文件

文章目录

  • 一、使用@PropertySource加载自定义配置文件
    • (一)创建Spring Boot Web项目ConfigDemo01
    • (二)创建自定义配置文件
    • (三)创建自定义配置类
    • (四)编写测试方法
    • (五)运行测试方法
    • (六)修改测试方法代码
    • (七)再次运行测试方法
    • 课堂练习:在Web页面显示学生配置信息
  • 二、使用@ImportResource加载XML配置文件
    • (一)创建创建Spring Boot Web项目ConfigDem
    • (二)创建自定义服务类
    • (三)创建Spring配置文件
    • (四)在启动类上添加注解,加载自定义Spring配置文件
    • (五)打开测试类,编写测试方法
    • (六)运行测试方法,查看结果
  • 三、使用@Configuration编写自定义配置类
    • (一)创建Spring Boot Web项目ConfigDemo03
    • (二)创建自定义服务类
    • (三)创建自定义配置类CustomConfig
    • (四)打开测试类,编写测试方法
    • (五)运行测试方法,查看结果

一、使用@PropertySource加载自定义配置文件

(一)创建Spring Boot Web项目ConfigDemo01

  • 设置项目元数据
    在这里插入图片描述
  • 添加项目依赖
    在这里插入图片描述
  • 设置项目编码为utf8(尤其注意复选框)
    在这里插入图片描述

(二)创建自定义配置文件

  • resources下创建myconfig.properties文件
student.id=20210101
student.name=张三丰
student.gender=男
student.age=18

(三)创建自定义配置类

  • net.shuai.boot包里创建配置类config.StudentConfig
package nei.shuai.boot.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
 * 功能:学生配置类
 */
@Component // 交给Spring容器管理
@PropertySource("classpath:myconfig.properties") // 加载自定义配置文件
@ConfigurationProperties(prefix="student") // 配置属性,设置前缀
public class StudentConfig {
    private String id;
    private String name;
    private String gender;

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    private int age;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "StudentConfig{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", gender=" + gender + '\'' +
                ", age=" + age +
                '}';
    }
}

(四)编写测试方法

  • 点开测试类ConfigDemo01ApplicationTests
  • 编写测试方法,注入学生配置实体,创建testStudentConfig()测试方法,在里面输出学生配置实体信息
package nei.shuai.boot;

import nei.shuai.boot.config.StudentConfig;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class ConfigDemo01ApplicationTests {

    @Autowired // 自动装配学生配置实体
    private StudentConfig studentConfig;

    @Test
    public void testStudentConfig() {
        // 输出学生配置实体信息
        System.out.println(studentConfig);
    }

}

(五)运行测试方法

在这里插入图片描述

(六)修改测试方法代码

  • 说明:注入的StudentConfig名称不必是studentConfig,在Spring Boot 2.4.5里,StudentConfig的注解@Component默认是单例的,因此不会因为注入名称是studentConfig1而产生的两个StudentConfig实例。
    在这里插入图片描述

(七)再次运行测试方法

在这里插入图片描述

课堂练习:在Web页面显示学生配置信息

  • 创建controller子包,在子包里控制器StudentConfigController
package nei.shuai.boot.controller;

import nei.shuai.boot.config.StudentConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class StudentConfigController {

    @Autowired // 自动装配学生配置实体
    private StudentConfig studentConfig;

    @RequestMapping("/student")
    @ResponseBody
    public String student() {
        return studentConfig.toString();
    }
}
  • 运行启动类StudentConfigController
  • 在浏览器里访问http://localhost:8080/student
    在这里插入图片描述
  • 显示学生对象JSON
package nei.shuai.boot.controller;

import nei.shuai.boot.config.StudentConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class StudentConfigController {

    @Autowired // 自动装配学生配置实体
    private StudentConfig studentConfig;

    @RequestMapping("/student")
    @ResponseBody
    public StudentConfig student() {
        return studentConfig;
    }
}
  • 在浏览器里访问http://localhost:8080/student
    在这里插入图片描述
  • 格式化字符串
package nei.shuai.boot.controller;

import nei.shuai.boot.config.StudentConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class StudentConfigController {

    @Autowired // 自动装配学生配置实体
    private StudentConfig studentConfig;

    @RequestMapping("/student")
    @ResponseBody
    public String student() {
        return "学号:" + studentConfig.getId() + "<br/>" +
                "姓名:" + studentConfig.getName() + "<br/>" +
                "性别:" + studentConfig.getGender() + "<br/>" +
                "年龄:" + studentConfig.getAge();
    }
}
  • 在浏览器里访问http://localhost:8080/student
    在这里插入图片描述

二、使用@ImportResource加载XML配置文件

(一)创建创建Spring Boot Web项目ConfigDem

  • 设置项目元数据
    在这里插入图片描述
  • 添加项目依赖
    在这里插入图片描述

(二)创建自定义服务类

  • net.shuai.boot包里创建service子包,在子包里创建CustomService
package net.shuai.boot.service;

/**
 * 功能:自定义服务类
 */
public class CustomService {
    public void welcome() {
        System.out.println("欢迎您访问泸州职业技术学院~");
    }
}

(三)创建Spring配置文件

  • resources目录里创建配置文件spring-config.xml
    在这里插入图片描述
  • <beans>元素里添加子元素<bean>,定义自定义服务类的JavaBean
<bean id="customService" class="net.shuai.boot.service.CustomService"/>
  • 定义一个Bean,指定Bean的名称及类所在的路径
    在这里插入图片描述

(四)在启动类上添加注解,加载自定义Spring配置文件

  • 在启动类上添加注解@ImportResource("classpath:config/spring-config.xml")
    在这里插入图片描述
  • 在Spring Boot启动后,Spring容器中就会自动实例化一个名为customService的Bean对象

(五)打开测试类,编写测试方法

  • 点开测试类ConfigDemo02ApplicationTests
package net.shuai.boot;

import net.shuai.boot.service.CustomService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Currency;

@SpringBootTest
class ConfigDemo02ApplicationTests {

    @Autowired // 注入自定义的服务实体类
    private CustomService customService;

    @Test
    public void testCustomService() {
        // 调用自定义服务实体的方法
        customService.welcome();
    }

}

(六)运行测试方法,查看结果

在这里插入图片描述

三、使用@Configuration编写自定义配置类

  • 使用@Configuration编写自定义配置类,这是Spring Bboot的推荐方式

(一)创建Spring Boot Web项目ConfigDemo03

  • 设置项目元数据
    在这里插入图片描述
  • 添加项目依赖
    在这里插入图片描述

(二)创建自定义服务类

  • net.shuai.boot包里创建service子包,在子包里创建CustomService
package net.shuai.boot.service;

/**
 * 功能:自定义服务类
 */
public class CustomService {
    public void welcome() {
        System.out.println("欢迎您访问泸州职业技术学院~");
    }
}

(三)创建自定义配置类CustomConfig

  • net.shuai.boot包里创建config子包,在子包里创建自定义配置类CustomConfig
  • 添加注解@Configuration,指定配置类
    在这里插入图片描述
  • 创建获取Bean的方法getCustomService()
    在这里插入图片描述
package net.shuai.boot.config;

import net.shuai.boot.service.CustomService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CustomConfig {
    @Bean(name = "cs") // 指定Bean的名称为“cs”,否则采用默认名称“customService”
    public CustomService getCustomService() {
        return new CustomService();
    }
}

(四)打开测试类,编写测试方法

  • 点开测试类ConfigDemo03ApplicationTests
  • 注入在CustomConfig配置类里定义的Bean,创建测试方法testCustomService(),然后调用自定义Bean的方法
package net.shuai.boot;

import net.shuai.boot.service.CustomService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class ConfigDemo03ApplicationTests {

    @Autowired // 注入自定义服务类
    private CustomService customService;

    @Test
    public void testCustomService() {
        customService.welcome();
    }
}

(五)运行测试方法,查看结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/25982.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实验9 分类问题

1. 实验目的 ①掌握逻辑回归的基本原理&#xff0c;实现分类器&#xff0c;完成多分类任务&#xff1b; ②掌握逻辑回归中的平方损失函数、交叉熵损失函数以及平均交叉熵损失函数。 2. 实验内容 ①能够使用TensorFlow计算Sigmoid函数、准确率、交叉熵损失函数等&#xff0c;…

【一次调频】考虑储能电池参与一次调频技术经济模型的容量配置方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

web服务器有哪些

<1>什么是web服务器 “网络服务”&#xff08;Web Service&#xff09;的本质&#xff0c;就是通过网络调用其他网站的资源。 Web Service架构和云 如果一个软件的主要部分采用了”网络服务”&#xff0c;即它把存储或计算环节”外包”给其他网站了&#xff0c;那么我…

关于机器人状态估计(15)-VIO与VSLAM精度答疑、融合前端、主流深度相机说明与近期工程汇总

VIOBOT种子用户有了一定的数量&#xff0c;日常大家也会进行交流&#xff0c;整理总结一下近期的交流与答疑。 VIO-SLAM(作为三维SLAM&#xff0c;相对于Lidar-SLAM和LIO-SLAM)在工程上落地的长期障碍&#xff0c;不仅在算法精度本身&#xff0c;还有相对严重的鲁棒性问题&…

【Redis25】Redis进阶:分布式锁实现

Redis进阶&#xff1a;分布式锁实现 锁这个概念&#xff0c;不知道大家掌握的怎么样。我是先通过 Java &#xff0c;知道在编程语言中是如何使用锁的。一般 Java 的例子会是操作一个相同的文件&#xff0c;但其实我们知道&#xff0c;不管是文件&#xff0c;还是数据库中的一条…

MYSQL高级之关联查询优化

建表 CREATE TABLE IF NOT EXISTS class ( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, card INT(10) UNSIGNED NOT NULL, PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS book ( bookid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, card INT(10) UNSIGNED NOT NULL, PRI…

ATECLOUD云测试平台新能源电机测试系统:高效、可扩展的测试利器

随着全球对环境保护的日益重视&#xff0c;新能源的发展越来越受到关注。电动汽车作为新能源领域的重要组成部分&#xff0c;其性能和质量对于消费者来说至关重要。为了确保电动汽车的性能和质量&#xff0c;测试系统平台解决方案变得越来越重要。本文将介绍一种基于ATECLOUD智…

基于SSM的网辩平台的设计与实现

摘 要 线上作为当前信息的重要传播形式之一&#xff0c;线上辩论系统具有显著的方便性&#xff0c;是人类快捷了解辩论信息、资讯等相关途径。但在新时期特殊背景下&#xff0c;随着网辩的进一步优化&#xff0c;辩论赛结合网络平台融合创新强度也随之增强。本文就网辩平台进…

Linux操作系统相关介绍

目录 一、认识Linux 二、Linux特点总结 三、Linux版本 &#xff08;1&#xff09;Linux内核版 &#xff08;2&#xff09;Linux发行版 一、认识Linux • 1991年&#xff0c;芬兰的一名大学生Linus Torvalds开发了linux内核 • Linux是一种开放源代码的、自由的、免费的类…

【Linux】线程互斥

文章目录 1. 背景概念多个线程对全局变量做-- 操作 2. 证明全局变量做修改时&#xff0c;在多线程并发访问会出问题3. 锁的使用pthread_mutex_initpthread_metux_destroypthread_mutex_lock 与 pthread_mutex_unlock具体操作实现设置为全局锁 设置为局部锁 4. 互斥锁细节问题5.…

DevOps该怎么做?

年初在家待了一段时间看了两本书收获还是挺多的. 这些年一直忙于项目, 经历了软件项目的每个阶段, 多多少少知道每个阶段是个什么, 会做哪些事情浮于表面, 没有深入去思考每个阶段背后的理论基础, 最佳实践和落地工具. 某天leader说你书看完了, 只有笔记没有总结, 你就写个总结…

ifconfig工具与驱动交互解析(ioctl)

Linux ifconfig&#xff08;network interfaces configuring&#xff09; Linux ifconfig命令用于显示或设置网络设备。ifconfig可设置网络设备的状态&#xff0c;或是显示目前的设置。同netstat一样&#xff0c;ifconfig源码也位于net-tools中。源码位于net-tools工具包中&am…

【LeetCode】HOT 100(2)

题单介绍&#xff1a; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数据结构的新手和想要在短时间内高效提升的人&#xff0c;熟练掌握这 100 道题&#xff0c;你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

软件测试测试环境搭建很难?一天学会这份测试环境搭建教程

如何搭建测试环境&#xff1f;这既是一道高频面试题&#xff0c;又是困扰很多小伙伴的难题。因为你在网上找到的大多数教程&#xff0c;乃至在一些培训机构的课程&#xff0c;都不会有详细的说明。 你能找到的大多数项目&#xff0c;是在本机电脑环境搭建环境&#xff0c;或是…

【单目标优化算法】孔雀优化算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

MySQL — 主从复制介绍

文章目录 主从复制一、概述二、原理三、 搭建主从复制结构3.1 服务器准备3.2 主库配置3.3 从库配置 主从复制 一、概述 ​ 主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上对这些日志重新执行&#xff08;也叫重做&#xff09;…

1. TensorRT量化的定义及意义

前言 手写AI推出的全新TensorRT模型量化课程&#xff0c;链接&#xff1a;TensorRT下的模型量化。 课程大纲如下&#xff1a; 1. 量化的定义及意义 1.1 什么是量化&#xff1f; 定义 量化(Quantization)是指将高精度浮点数(如float32)表示为低精度整数(如int8)的过程&…

如何运用R语言进行Meta分析在【文献计量分析、贝叶斯、机器学习等】多技术的融合

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…

华为OD机试真题 Java 实现【高矮个子排队】【2023Q2 100分】,附详细解题思路

一、题目描述 现在有一队小朋友&#xff0c;他们高矮不同&#xff0c;我们以正整数数组表示这一队小朋友的身高&#xff0c;如数组{5,3,1,2,3}。 我们现在希望小朋友排队&#xff0c;以“高”“矮”“高”“矮”顺序排列&#xff0c;每一个“高”位置的小朋友要比相邻的位置高…

【配电网重构】基于改进二进制粒子群算法的配电网重构研究(Matlab代码实现

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…