為什么會使用properties文件在軟件開發(fā)的過程中,,會經常遇到一些配置說是需要切換的,例如數據庫的配置地址,,用戶名和密碼,可以選擇在常量中進行配置,,但是當下次需要修改時,,則需要將Java代碼進行重新編譯,再重啟服務器,。這樣導致很繁瑣,。properties文件的出現使得后期項目的維護中,修改配置時會變得很簡單,。 yml后綴的又是什么文件百度百科:YML文件格式是YAML (YAML Aint Markup Language)編寫的文件格式,,YAML是一種直觀的能夠被電腦識別的的數據數據序列化格式,并且容易被人類閱讀,,容易和腳本語言交互的,,可以被支持YAML庫的不同的編程語言程序導入,比如:C/C++, Ruby, Python, Java, Perl, C#, PHP等,,它是類似于標準通用標記語言的子集XML的數據描述語言,,語法比XML簡單很多。 SpringBoot啟動加載配置文件機制SpringBoot啟動時,,會默認去尋找開發(fā)人員配置的application.properties文件或者application.yml文件來讀取配置,,其實yml和properties文件是一樣的原理,且一個項目上要么yml或者properties,,二選一的存在,。 1.application.properties的配置方式,類似鍵值對的存在 #數據庫連接池配置spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.platform=mysql#配置數據源spring.datasource.url=jdbc:mysql://localhost:3306/yangspring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driver#Mybatis配置#掃描的實體的包mybatis.typeAliasesPackage=com.yang.bean#掃描的配置文件地址mybatis.mapperLocations=classpath:mapper/*.xmlmybatis.configLocation=classpath:mybatis-config.xmlserver.port=8088#自定義信息userInfo.name=yanguserInfo.pass=123456 2.application.yml的配置方式如下,,每一個等級占一行,,子級別與父級別多一個tab,以此類推,,每一個最終節(jié)點,,配置信息時,,冒號后面需要加空格,值得注意的是,,一個級別在一個配置文件中只能出現以一次,,如果出現多個,則SpringBoot啟動的時候就會報錯,,例如,,spring在全局中只能出現一次 #數據庫連接池配置 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource platform: mysql url: jdbc:mysql://localhost:3306/yang #配置數據源 username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver
#Mybatis配置 #掃描的實體的包 #掃描的配置文件地址 mybatis: typeAliasesPackage:com.yang.bean mapperLocations:classpath:mapper/*.xml configLocationclasspath:mybatis-config.xml #服務啟動地址 server: port:8088 #自定義信息 userInfo: name: yang pass: 123456
properties文件的讀取方式properties文件讀取不需要導入其他的jar包依賴,可以直接使用SpringBoot攜帶的注解即可 1.application.properties文件讀取某個文件到變量中方法(@Value注解方式),,編寫Controller接口,,直接讀取properties配置文件 package com.yang.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;
import com.github.pagehelper.PageInfo; import com.yang.bean.ResultObject; import com.yang.bean.User; import com.yang.service.IUserService;
/** * @author Java小白 * */ @RestController //標識為返回類型為Json的控制器 public class UserController { @Value("${userInfo.name}") private String name; //自動注入服務類 @Autowired private IUserService userService; //標識請求地址 @RequestMapping("/propertieGetUserName") public String propertieGetUserName() { return name; }
}
2.接口訪問結果如下 yml文件的讀取方式1.application.yml文件讀取配置到某個對象中(@ConfigurationProperties注解方式),注意:對象名與配置文件中名字保持一致,,這個方法同樣適合properties文件 package com.yang.bean;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;
/** * * 配置讀取文件的對象 * @author Java小白 * */ @Component @ConfigurationProperties(prefix = "userInfo") // PropertySource默認取application.properties或者application.yml文件 可通過次注解指定其他文件 // @PropertySource(value = "config.properties") public class UserInfo { private String name; private String pass; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; }
}
2.編寫新的Controller接口,,用來訪問yml配置的信息
package com.yang.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;
import com.github.pagehelper.PageInfo; import com.yang.bean.ResultObject; import com.yang.bean.User; import com.yang.bean.UserInfo; import com.yang.service.IUserService;
/** * @author Java小白 * */ @RestController //標識為返回類型為Json的控制器 public class UserController { @Autowired private UserInfo userInfo;
//標識請求地址 @RequestMapping("/ymlGetUserName") public String ymlGetUserName() { return userInfo.getName(); }
}
3.配置的yml訪問接口返回如下
總結本文介紹了properties文件和yml文件兩種配置文件的讀取的方式,以及SpringBoot如何讀取文件中的配置信息,,歡迎技術交流
|