spring boot自定义配置文件数据源

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot自定义配置文件数据源相关的知识,希望对你有一定的参考价值。

参考技术A SpringBoot支持动态的读取文件,留下的扩展接口 org.springframework.boot.env.EnvironmentPostProcessor 。这个接口是spring包下的,使用这个进行配置文件的集中管理,而不需要每个项目都去配置配置文件。这种方法也是springboot框架留下的一个扩展(可以自己去扩展)

在 /Users/naeshihiroshi/study/studySummarize/SpringBoot/ (自己测试也可以随机在一个目录下建立一文件),目录下建立一个名为 springboot.properties 文件,

springboot.properties 中定义一些配置,配置如下:

定义 MyEnvironmentPostProcessor 实现 EnvironmentPostProcessor 接口

在classpath定义一个 META-INF 文件夹然后在其下面先建 spring.factories 文件,在其中指定:

启动类测试:

打印结果:

Spring Boot加载自定义配置文件

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

1、创建项目文件

在这里插入图片描述

2、添加项目依赖

在这里插入图片描述

3、创建自定义配置文件

在这里插入图片描述

  • 注意:属性值是中文,必须采用unicode,否则会出现乱码问题。
    在这里插入图片描述

4、创建自定义配置类(学生配置类)

在这里插入图片描述

package net.zjs.lesson04.config;

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

/**
 * 功能:学生配置类
 * 作者:zjs
 * 日期:2021-05-07
 */
@Component//交给spring容器管理
@PropertySource("classpath:myconfig.properties")//加载自定义配置文件
@ConfigurationProperties(prefix = "student")//配置属性,设置前缀
public class StudentConfig {
    private String id;
    private String name;
    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 + '\\'' +
                ", age=" + age +
                '}';
    }
}

5、编写测试方法

在这里插入图片描述

package net.zjs.lesson04;

import net.zjs.lesson04.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
    void contextLoads() {
    }
    
    @Test
    public void testStudentConfig(){
        //输出学生配置实体信息
        System.out.println(studentConfig);
    }

}

6、测试方法,查看结果

在这里插入图片描述

7、修改测试方法代码

在这里插入图片描述

8、再次运行测试方法,查看结果

在这里插入图片描述

9、课堂练习

  • 要求:在Web页面显示学生配置信息

(1)创建控制器

在这里插入图片描述

package net.zjs.lesson04.controller;

import net.zjs.lesson04.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;

/**
 * 功能:
 * 作者:zjs
 * 日期:2021-05-07
 */
@Controller
@RequestMapping("/zjs")
public class StudentController {

    @Autowired
    StudentConfig studentConfig;

    @ResponseBody
    @RequestMapping("/student")
    public String student(){
        return studentConfig.toString();
    }

}


(2)运行启动类

在这里插入图片描述

(3)访问页面,查看结果

  • http://localhost:8080/zjs/student

在这里插入图片描述

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

1、创建项目文件

在这里插入图片描述

2、添加依赖

在这里插入图片描述

3、创建自定义服务类

在这里插入图片描述

package net.zjs.lesson04.service;

import org.springframework.stereotype.Service;

/**
 * 功能:自定义服务类
 * 作者:zjs
 * 日期:2021-05-07
 */
public class CustomService {
    public void welcome(){
        System.out.println("欢迎您访问~");
    }
}

4、创建spring配置文件

在这里插入图片描述

  • 定义一个Bean,指定Bean的名称及类所在的路径
    在这里插入图片描述

5、在启动类上添加注解,加载自定义JavaBean配置文件

在这里插入图片描述

6、编写测试方法

在这里插入图片描述

package net.zjs.lesson04;

import net.zjs.lesson04.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 {

    //注入自定义bean
    @Autowired
    private CustomService customService;

    @Test
    void contextLoads() {
    }

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


7、运行测试方法,查看结果

在这里插入图片描述

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

1、创建项目文件

在这里插入图片描述

2、添加项目依赖

在这里插入图片描述

3、编写自定义服务类

在这里插入图片描述

package net.zjs.lesson05.service;

/**
 * 功能:自定义服务类
 * 作者:zjs
 * 日期:2021-05-07
 */
public class CustomService {
    public void welcom(){
        System.out.println("欢迎访问~");
    }
}

4、编写自定义配置类

在这里插入图片描述

package net.zjs.lesson05.config;

import net.zjs.lesson05.service.CustomService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 功能:自定义配置类
 * 作者:zjs
 * 日期:2021-05-07
 */
@Configuration
public class MyConfig {
    @Bean(name = "cs")//不知道Bean名称,默认就是customService
    public CustomService getCustomService(){
        return new CustomService();
    }
}

5、编写测试方法

在这里插入图片描述

package net.zjs.lesson05;

import net.zjs.lesson05.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
    void contextLoads() {
        //调用测试方法
        customService.welcom();
    }

}

6、运行测试方法,查看结果

在这里插入图片描述

以上是关于spring boot自定义配置文件数据源的主要内容,如果未能解决你的问题,请参考以下文章

玩转Spring Boot 自定义配置导入XML配置与外部化配置

Spring Boot2.0自定义配置文件使用

Spring boot 引用自定义配置文件

Spring Boot? 配置文件详解:自定义属性随机数多环境配置等

自定义spring boot start

Spring Boot 2从入门到入坟 | 配置文件篇:自定义类绑定的配置提示