企业级信息系统开发讲课笔记4.4 Spring Boot加载自定义配置文件

news/2024/11/23 3:53:58/

文章目录

  • 零、学习目标
  • 一、为什么需要加载自定义配置文件
  • 二、使用@PropertySource加载自定义配置文件
    • (一)创建Spring Boot项目
    • (二)创建自定义配置文件
    • (三)创建自定义配置类
    • (四)编写测试方法
    • (五)运行测试方法
    • (六)修改测试方法代码
    • (七)再次运行测试方法
    • 课堂练习:在Web页面显示学生配置信息
  • 三、使用@ImportResource加载XML配置文件
    • (一)创建创建Spring Boot项目
    • (二)创建自定义服务类
    • (三)创建Spring配置文件
    • (四)加载自定义Spring配置文件
    • (五)编写测试方法
    • (六)运行测试方法
  • 四、使用@Configuration编写自定义配置类
    • (一)创建Spring Boot项目
    • (二)创建自定义服务类
    • (三)创建自定义配置类
    • (四)编写测试方法
    • (五)运行测试方法

零、学习目标

  1. 熟悉使用@PropertySource加载配置文件
  2. 熟悉使用@ImportResource加载XML配置文件
  3. 掌握使用@Configuration编写自定义配置类

一、为什么需要加载自定义配置文件

  • Spring Boot免除了项目中大部分的手动配置,对于一些特定情况,我们可以通过修改全局配置文件以适应具体生产环境,可以说,几乎所有的配置都可以写在application.peropertiesapplication.yaml文件中,Spring Boot会自动加载全局配置文件从而免除我们手动加载的烦恼。但是,如果我们自定义配置文件,Spring Boot是无法识别这些配置文件的,此时就需要我们手动加载。

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

(一)创建Spring Boot项目

  • 基于Spring Initializr创建Spring Boot项目
    在这里插入图片描述

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

  • 选择Spring Boot版本,添加相关依赖
    在这里插入图片描述

  • 设置项目名称与保存位置
    在这里插入图片描述

  • 单击【Finish】按钮
    在这里插入图片描述

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

  • resources里创建myconfig.properties文件
    在这里插入图片描述

  • 说明:如果在配置文件里使用user.name,通过配置文件获取的值可能是操作系统中的用户名,因为操作系统中也是有user.name属性的。

  • 为了在属性文件里使用中文而不出现乱码,我们需要设置文件编码
    在这里插入图片描述

  • 设置学生的四个属性值
    在这里插入图片描述

(三)创建自定义配置类

  • net.huawei.boot包里创建config子包,在子包里创建StudentConfig
    在这里插入图片描述
package net.huawei.boot.config;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;/*** 功能:学生配置类* 作者:华卫* 日期:2023年05月30日*/
@Component // Spring容器组件
@PropertySource("classpath:myconfig.properties") // 加载自定义配置文件
@ConfigurationProperties(prefix = "student") // 配置属性,设置前缀
public class StudentConfig {private String id; // 学号private String name; // 姓名private String 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 String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "StudentConfig{" +"id='" + id + '\'' +", name='" + name + '\'' +", gender='" + gender + '\'' +", age=" + age +'}';}
}

(四)编写测试方法

  • 打开自带的测试类ConfigDemo01ApplicationTests
    在这里插入图片描述

  • 注入学生配置实体,创建testStudentConfig()测试方法,在里面输出学生配置实体信息

package net.huawei.boot;import net.huawei.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;@Testpublic void testStudentConfig() {// 输出学生配置实体信息System.out.println(studentConfig);}
}

(五)运行测试方法

  • 运行testStudentConfig()方法,查看结果
    在这里插入图片描述

(六)修改测试方法代码

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

(七)再次运行测试方法

  • 运行testStudentConfig()方法,查看结果
    在这里插入图片描述
  • 可以看到,StudentConfig注入名称改成student之后,测试结果依然相同,不受注入名称变化的任何影响。

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

  • 创建controller子包,在子包里创建StudentConfigController
    在这里插入图片描述

  • 运行入口类,在浏览器里访问http://localhost:8080/student
    在这里插入图片描述

  • 或者显示学生配置实体的JSON格式
    在这里插入图片描述

  • 或者逐个字段显示学生配置实体的信息
    在这里插入图片描述

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

(一)创建创建Spring Boot项目

  • 基于Spring Initializr模板创建Spring Boot项目
    在这里插入图片描述

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

  • 选择Spring Boot版本,添加相关依赖
    在这里插入图片描述

  • 设置项目名称与保存位置
    在这里插入图片描述

  • 单击【Finish】按钮
    在这里插入图片描述

(二)创建自定义服务类

  • net.huawei.boot包里创建service子包,在子包里创建CustomService
    在这里插入图片描述
package net.huawei.boot.service;/*** 功能:自定义服务类* 作者:华卫* 日期:2023年05月30日*/
public class CustomService {public void welcome() {System.out.println("欢迎您访问泸州职业技术学院~");}
}

(三)创建Spring配置文件

  • resources里创建config目录,在config目录里创建spring-config.xml文件
    在这里插入图片描述

  • <beans>元素里添加子元素<bean>,定义自定义服务类的JavaBean

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="customService" class="net.huawei.boot.service.CustomService"/></beans>

(四)加载自定义Spring配置文件

  • 在入口类上添加注解@ImportResource("classpath: config/spring-config.xml")
    在这里插入图片描述

  • 在Spring Boot启动后,Spring容器中就会自动实例化一个名为customService的Bean对象

(五)编写测试方法

  • 打开自带的测试类ConfigDemo02ApplicationTests
    在这里插入图片描述

  • 注入在Spring配置文件里定义的Bean,创建testCustomService()测试方法,然后调用自定义Bean的方法

package net.huawei.boot;import net.huawei.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 ConfigDemo02ApplicationTests {@Autowired // 注入自定义服务实体private CustomService customService;@Testpublic void testCustomService() {// 调用自定义服务实体的方法customService.welcome();}
}

(六)运行测试方法

  • 运行testCustomService()方法,查看结果
    在这里插入图片描述

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

  • 我们知道,Spring Boot追求的是零配置文件。使用@Configuration编写自定义配置类,这是Spring Bboot的推荐方式

(一)创建Spring Boot项目

  • 基于Spring Initializr模板创建Spring Boot项目
    在这里插入图片描述

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

  • 选择Spring Boot版本,添加相关依赖
    在这里插入图片描述

  • 配置项目名称与保存位置
    在这里插入图片描述

  • 单击【Finish】按钮
    在这里插入图片描述

(二)创建自定义服务类

  • net.huawei.boot包里创建service子包,在子包里创建CustomService
    在这里插入图片描述
package net.huawei.boot.service;/*** 功能:自定义服务类* 作者:华卫* 日期:2023年05月30日*/
public class CustomService {public void welcome() {System.out.println("欢迎您访问泸州职业技术学院~");}
}

(三)创建自定义配置类

  • net.huawei.boot包里创建config子包,在子包里创建CustomConfig
    在这里插入图片描述

  • 添加注解@Configuration,指定配置类
    在这里插入图片描述

  • 创建获取Bean的getCustomService()方法

package net.huawei.boot.config;import net.huawei.boot.service.CustomService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** 功能:自定义配置类* 作者:华卫* 日期:2023年05月30日*/
@Configuration
public class CustomConfig {@Bean(name = "cs") // 指定Bean的名称`cs`,否则采用默认名称`customService`public CustomService getCustomService() {return new CustomService();}
}

(四)编写测试方法

  • 打开自带的测试类ConfigDemo03ApplicationTests
    在这里插入图片描述
  • 注入在CustomConfig配置类里定义的Bean,创建testCustomService()方法,然后调用自定义Bean的方法
package net.huawei.boot;import net.huawei.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 cs;@Testpublic void testCustomService() {// 调用自定义服务实体的方法cs.welcome();}
}

(五)运行测试方法

  • 运行testCustomService()方法,查看结果
    在这里插入图片描述

http://www.ppmy.cn/news/105598.html

相关文章

Node.JS学习 | Babel | webpack | ES6

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Node.JS Node.JS能够在服务器端运行JavaScript的开放源代码、跨平台运行环境&#xff1b;Node.js采用Google开发的V8运行代码&#xff0c;使用事件驱动、非阻塞IO和异…

【红黑树 -- 理论与实现】

目录&#xff1a; 前言红黑树的概念红黑树的性质 插入过程遇到的情况情况1 -- 根节点情况2 -- parent为黑色情况3 -- parent为红色uncle为红色uncle为黑色uncle不存在 插入过程代码实现分析红黑树是否构建成功总结 前言 打怪升级&#xff1a;第88天 红黑树&#xff0c;可以说是…

202313读书笔记|《山居七年》——我只想在广袤璀璨的星河里享受生的鲜活,独自飞,游走

202313读书笔记|《山居七年》——我只想在广袤璀璨的星河里享受生的鲜活&#xff0c;独自飞&#xff0c;游走 《山居七年》 作者张二冬&#xff0c;选择隐士山居是一种很自由随性的生活态度&#xff0c;我觉得这不是普通人可以拥有的&#xff0c;比如我&#xff0c;并未入世也…

小航编程题库蓝桥杯stem科技素养模拟练习试卷(初级第1套)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 1. 以下选项中&#xff0c;&#xff08; &#xff09;不属于生物。 A 玫瑰花 B 河流 C 蜜蜂 D 人 2. 以下选项中&#xff0c;&…

傅一平:一文讲透ERP的下一代架构!

”5月22日&#xff0c;华为宣布仅用15小时便完成了全球88家子公司MetaERP系统的切换。这也意味着华为MetaERP系统研发取得胜利&#xff0c;成功摆脱外国供应商断供停服威胁&#xff0c;实现该系统的全栈自主可控。“ 自己最近对ERP下一代架构有了兴趣&#xff0c;原因有四个&am…

docker版jxTMS使用指南:python服务之内置自动机

本文讲解4.0版的jxTMS中python服务的内置自动机&#xff0c;整个系列的文章请查看&#xff1a;docker版jxTMS使用指南&#xff1a;4.0版升级内容 docker版本的使用&#xff0c;请参考&#xff1a;docker版jxTMS使用指南 4.0版jxTMS中python服务是一个采集前端数据的接口机。其…

美国E8267C是德(KEYSIGHT) E8267D 20G/44G矢量信号发生器

Agilent E8267C、Keysight E8267D、 PSG 矢量信号发生器&#xff0c;高达 44 GHz ​Keysight E8267D (Agilent) PSG 矢量信号发生器是业界首款 I/Q 调制高达 44 GHz 的集成微波矢量信号发生器。它具有先进的宽带内部基带发生器&#xff0c;能够灵活地播放任意波形或生成复杂的…

33.C++函数重载

今天进行了新的学习。 目录 1.什么是函数重载&#xff1f; 2.函数重载的规则 代码演示&#xff1a; 分析&#xff1a; 3.为什么C能进行函数重载 例如&#xff1a; 调用约定&#xff1a; 4.extern关键字 1.什么是函数重载&#xff1f; 在同一个作用域内&#xff0c…