SpringBoot外部配置文件注入Bean对象使用大全

通过默认配置文件注入

springboot中默认的配置文件为application.yml或者application.properties文件,所以我们可以将属性配置在这两个文件中进行注入(以application.yml文件为例)

  1. 添加属性app.name到application.yml文件中
server:
   port: 8888
app:
   name: demo2
  1. 在代码中进行注入,将app.name注入到AppConfig.java对象中
    将配置文件属性注入到bean对象种主要有两种方式,一种是@ConfigurationProperties方式注入,另一种是@Value方式注入.两种注入方式的具体区别,可参考我的另一篇博客SpringBoot @value注入与@ConfigurationProperties注入对比
    此处我们使用@ConfigurationProperties方式注入,这个比较常见与食用
package com.mary.demo.configuration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

/**
 * Created by marylgao on 2020/3/13.
 */
@Configuration
@ConfigurationProperties(prefix = "app")
public class AppConfig {
    private String name;

    public String getName() {
        return name;
    }

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

  1. 对AppConfig.java进行注入并访问(Component注解注入对象即可)
    为了测试方便,我使用Controller来注解配置对象,并通过浏览器访问显示结果

package com.mary.demo.controller;

import com.mary.demo.configuration.AppConfig;
import com.mary.demo.configuration.DatabaseConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {
    @Autowired
    private AppConfig appConfig;

    @RequestMapping(value = "getName", method = RequestMethod.GET)
    String getName(){
        return appConfig.getName();
    }
}
  1. 测试
    SpringBoot外部配置文件注入Bean对象使用大全_第1张图片

通过自定义的配置文件进行注入

  1. 在classpath路径下添加datasource.properties文件
    SpringBoot外部配置文件注入Bean对象使用大全_第2张图片
  2. 配置datasource.properties属性内容
datasource.username = admin
datasource.password =123456
  1. 代码中读取配置文件并注入到属性中
package com.mary.demo.configuration;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * Created by marylgao on 2020/3/13.
 */
@Configuration
@ConfigurationProperties(prefix = "datasource")
@PropertySource("classpath:datasource.properties")
public class DatabaseConfig {
    private String username;
    private String password;

    public String getPassword() {
        return password;
    }
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

  1. 将配置文件bean对象注入到其他bean对象中进行操作,为了测试,我将配置bean对象注入到HellowordController类进行测试
@RestController
public class HelloWorldController {
    @Autowired
    private DatabaseConfig databaseConfig;

    @RequestMapping(value = "getDatasource", method = RequestMethod.GET)
    String getDatasourceInfo() {
        return databaseConfig.getUsername() + ": " + databaseConfig.getPassword();
    }
}
  1. 测试成功,如下
    SpringBoot外部配置文件注入Bean对象使用大全_第3张图片

你可能感兴趣的:(SpringBoot系列教程,spring,boot)