接上一章demo:
一、IDEA在创建完Spring Boot项目时,会在src/main/resources目录下生成一个application.properties文件,用户进行系统属性配置,默认为空。Spring Boot也支持yml格式的文件配置,当前使用yml文件配置进行操作。
resources下新建一个文件:application.yml ,手写测试数据:
database:
type: mysql
username: root
password: root
要读取配置文件的属性值,只需在变量上加@Value("${属性名}")注解,就可以将配置文件 application.yml 的属性值赋给变量。
我们可以在默认Controller进行,也可以新建一个controller进行操作,此处新建一个Controller类ApplicationController.java,并将每一个变量进行绑定,如下:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ApplicationController {
@Value("${database.type}")
private String type ;
@Value("${database.username}")
private String username ;
@Value("${database.password}")
private String password ;
@GetMapping("/my")
public String my(){
StringBuffer sb = new StringBuffer();
sb.append("****************");
sb.append("<br/>");
sb.append("type="+this.type);
sb.append("<br/>");
sb.append("username="+this.username);
sb.append("<br/>");
sb.append("password="+this.password);
sb.append("<br/>");
sb.append("*****end********");
return sb.toString() ;
}
}
重新启动项目,浏览器访问http://localhost:8080/my ,效果如下:
这说明配置文件application.yml里的属性: database.type、database.username、database.password 已经成功读入应用程序,大功告成!
二、假如配置属性很多,那么代码里是不是要写很多变量来一个一个绑定,这样就显得很麻烦,在这里我们可以将配置文件里的属性赋值给实体类。
需要先创建一个ConfigBean.java 类,此类必须加一个注解@ConfigurationProperties ,表明该类为配置属性类,并加上配置的prefix。还需要添加@Component注解, Spring Boot 启动时通过包扫描将该类作为一个Bean 注入 IoC 容器中。
创建一个Controller ,读取 ConfigBean 类的属性。在 Controller 类上,加 @EnableConfigurationProperties 注解,并指明 ConfigBean 类。
import com.sinal.teat.spring_boot_demo1011.bean.ConfigBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@EnableConfigurationProperties(ConfigBean.class)
public class ConfigController {
@Autowired
ConfigBean configBean ;
@GetMapping("config")
public String init(){
StringBuffer sb = new StringBuffer();
sb.append("***************"); sb.append("<br>");
sb.append("type="+configBean.getType()); sb.append("<br>");
sb.append("username="+configBean.getUsername()); sb.append("<br>");
sb.append("password="+configBean.getPassword()); sb.append("<br>");
sb.append("**********end************");
return sb.toString();
}
}
重新启动项目,浏览器输入:http://localhost:8080/config 效果如下:
demo代码:https://download.csdn.net/download/ssdate/10723239