美文网首页
Spring Boot中注解@ConfigurationProp

Spring Boot中注解@ConfigurationProp

作者: samgroves | 来源:发表于2017-11-11 16:07 被阅读0次

前言:

  1. 使用的是spring boot + mybatis plus 框架
  2. 项目必须可以正常使用
  3. 通过获取到配置文件所配置的属性从而理解该注解的使用

一、controller类

package com.mybatis.api.controller.configurationProperties;

import com.mybatis.repository.propertiesEntity.DatasourcePro;
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;

import java.util.HashMap;
import java.util.Map;

/**
 * Author: SamGroves
 * <p>
 * Description: 通过 @ConfigurationProperties 来获取配置文件的信息
 * <p>
 * Date: 2017/11/11
 */
@Controller
@RequestMapping(value = "/config")
public class ConfigurationPropertiesController {

    @Autowired
    private DatasourcePro datasourcePro;

    @RequestMapping("/test")
    @ResponseBody
    public Map<String, Object> test(){

        Map<String, Object> map = new HashMap<>();
        map.put("url", datasourcePro.getUrl());
        map.put("userName", datasourcePro.getUsername());
        map.put("password", datasourcePro.getPassword());
        map.put("className", datasourcePro.getDriverClassName());
        map.put("type", datasourcePro.getType());

        return map;
    }
}

二、配置文件datasource-dev.properties

# mysql配置

spring.datasource.url=jdbc:mysql://127.0.0.1:8888/test?useUnicode=false&autoReconnect=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

# mybatis_config
# mybatis.mapper-locations 的路径是Mapper.xml文建所在路径
# mybatis.typeAliasesPackage 的包为entity所在类

mybatis.mapper-locations=classpath:com/mybatis/repository/mapper/impl/*Mapper.xml
mybatis.typeAliasesPackage=com.mybatis.repository.entity
  1. 创建一个需要的配置文件POJO类 DatasourceDev.java
package com.mybatis.repository.propertiesEntity;

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

/**
 * Author: SamGroves
 * <p>
 * Description: 通过 @ConfigurationProperties 来获取配置文件的信息
 * <p>
 * Date: 2017/11/11
 */
@ConfigurationProperties(prefix = "spring.datasource")
@Component
public class DatasourcePro {

    private String url;

    private String username;

    private String password;

    // 配置文件中是driver-class-name, 转驼峰命名便可以绑定成
    private String driverClassName;

    private String type;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

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

    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}
总结:

  1. @ConfigurationProperties 和 @value 有着相同的功能
     但是 @ConfigurationProperties 的写法更为方便
  2. @ConfigurationProperties 的 POJO类的命名比较严格,
     因为它必须和prefix的后缀名要一致, 不然值会绑定不上, 
     特殊的后缀名是“driver-class-name”这种带横杠的情况,
     在POJO里面的命名规则是下划线转驼峰就可以绑定成功,所以
     就是 “driverClassName”

相关文章

网友评论

      本文标题:Spring Boot中注解@ConfigurationProp

      本文链接:https://www.haomeiwen.com/subject/vaowmxtx.html