SpringBoot获取全局配置文件的属性以及@ConfigurationProperties实现类型安全的配置
在SpringBoot,可以定义一个全局配置文件,全局配置文件有两种形式:
1). application.properties
2).application.yml
二者的后缀名不同,编辑的格式也不同,但都是全局配置文件,二者选其一即可,都可以起到相同的作用
在你的maven工程下的src/main/resources 新建一个文件,以 application.properties为例。
然后编辑以下内容
book.author=Tom
book.name=Spring
然后在src/main/java下新建一个java.class并写入以下的代码
@EnableAutoConfiguration //根据所依赖的jar包进行自动配置
@Controller
public class Example { @Value("${book.author}")
private String author; @Value("${book.name}")
private String name; @RequestMapping("/bookInfo") //映射路由
@ResponseBody
public String showInfo()
{
return author+":"+name;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SpringApplication.run(Example.class,args); } }
保存后构建maven,然后运行该java.class
就可以在相应的地址(http://localhost:8080/bookInfo)获取对应的属性。
当然,如果application.properties中的属性比较少,用上述的方式是可行的,但是如果application.properties中有很多的属性的时候,每次都要写一次@Value,是不是过于累赘?
于是有 @ConfigurationProperties实现类型安全的配置(在application.properties的基础上)。
先看具体的实现,application.properties配置文件的内容和上面的相同
@EnableAutoConfiguration // 根据所依赖的jar包进行自动配置
@Controller
@ConfigurationProperties(prefix = "book")
public class Example { // @Value("${book.author}")
private String author; // @Value("${book.name}")
private String name; public String getAuthor() {
return author;
} public void setAuthor(String author) {
this.author = author;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @RequestMapping("/bookInfo") // 映射路由
@ResponseBody
public String showInfo() {
return author + ":" + name;
} public static void main(String[] args) {
// TODO Auto-generated method stub
SpringApplication.run(Example.class, args); } }
注意:@ConfigurationProperties(prefix = "book"),写在获取成员变量的类前。
然后就是,对于类中的成员变量命名,要是application.properties属性中除了前缀外的剩余部分,比如我的application.properties中的 book.name,那么想获取其属性时,就要定义一个String name,此外,成员变量需要get和set方法。
最后,关于application.properties配置文件中,属性的命名最好都已相同的前缀开头(比如上面都是以book开头)
这样,就不用每次都写@Value了
关于 @Controller和@RestController的区别
@RestController,一般是使用在类上的,它表示的意思其实就是结合了@Controller和@ResponseBody两个注解,@ResponseBody,一般是使用在单独的方法上的,需要哪个方法返回json数据格式,就在哪个方法上使用,具有针对性。
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。 RestController使用的效果是将方法返回的对象直接在浏览器上展示成json格式,而如果单单使用@Controller会报错,需要ResponseBody配合使用。
1、如果只是使用@RestController注解Controller类,则方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。 例如:本来应该到success.jsp页面的,则其显示success.
2、如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
3、如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
或者以下的解释:

此外,在配置文件中可以配置的属性请参考:springboot全局配置文件可设置的属性
SpringBoot获取全局配置文件的属性以及@ConfigurationProperties实现类型安全的配置的更多相关文章
- SpringBoot 获取properties配置文件的属性
自定义properties文件获取属性 使用 @ConfigurationProperties((prefix = "demo")) 和 @PropertySource(" ...
- IntelliJ IDEA 2017版 开发SpringBoot的全局配置文件使用
一.全局配置文件 描述: Spring Boot项目使用一个全局的配置文件application.properties或者是application.yml,在resources目录下或者类路径 ...
- c# 建立到数据源的连接 以及获取项目配置文件的属性
两种连接数据库的写法: <connectionStrings> <add name="HRModelsContainer" connectionString=&q ...
- SpringBoot获取配置文件,就这么简单。
在讲SpringBoot 获取配置文件之前我们需要对SpringBoot 的项目有一个整体的了解,如何创建SpringBoot 项目,项目结构等等知识点,我在这里就不一一讲述了,没有学过的小伙伴可以自 ...
- SpringBoot基础学习(二) SpringBoot全局配置文件及配置文件属性值注入
全局配置文件 全局配置文件能够对一些默认配置值进行修改.SpringBoot 使用一个名为 application.properties 或者 application.yaml的文件作为全局配置文件, ...
- springboot深入学习(一)-----springboot核心、配置文件加载、日志配置
一.@SpringBootApplication @SpringBootApplication是spring boot的核心注解,源码如下: 相当于:@Configuration+@EnableAut ...
- SpringBoot入坑-配置文件使用
经过上一篇的介绍,相信小伙伴们已经按奈不住内心对springboot的向往,本篇我将继续向小伙伴介绍springboot配置文件的配置,已经全局配置参数如何使用,好了下面开始我们今天的内容介绍. 我们 ...
- 第三百零六节,Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置
Django框架,models.py模块,数据库操作——创建表.数据类型.索引.admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, ...
- 四 Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置
Django框架,models.py模块,数据库操作——创建表.数据类型.索引.admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, ...
随机推荐
- sqlalchemy 多对多关系
# -*- coding: utf-8 -*- from sqlalchemy import Column, String, create_engine,ForeignKey,Text,Integer ...
- 判断PC或mobile设备
js 限制: <script type="text/javascript"> function uaredirect(f){try{if(document.getEle ...
- fjwc2019 D2T1 直径 (构造)
#181. 「2019冬令营提高组」直径 (这题构造题是我考场上唯一一A的题........) 先看这个特殊的Subtask4 Subtask 4(20pts):$\sqrt{1+8k}$ 为整 ...
- lasticsearch -2.3.x head插件安装(windows系统)
1.进入命令行: home键+R 命令: > cd \elasticsearch根目录\bin\ > plugin install mobz/elasticsearch-head 2. ...
- 选择排序法、冒泡排序法、插入排序法、系统提供的底层sort方法排序之毫秒级比较
我的代码: package PlaneGame;/** * 选择排序法.冒泡排序法.插入排序法.系统提供的底层sort方法排序之毫秒级比较 * @author Administrator */impo ...
- CC攻击介绍及如何防御
CC攻击介绍 CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,前身名为Fatboy攻击,也是一种常见的网站攻击方法.攻击者借助代理服务器生成指向受害主机的合 ...
- Codeforces 581F Zublicanes and Mumocrates - 树形动态规划
It's election time in Berland. The favorites are of course parties of zublicanes and mumocrates. The ...
- bash 变量
本地变量: 变量赋值:name=value 变量引用:${name} , $name "":变量名会替换为其值 '':变量名不会替换为其值 查看变量: set 撤销变量:unse ...
- chrome浏览器中的百度搜索引擎总是先自动跳转到百度首页怎么办?
1.修改百度搜索引擎代码如下: http://www.baidu.com/s?wd=%s&ie={inputEncoding} 备注:现在chorme不能直接在默认的百度搜索引擎上修改,而且自 ...
- 源码编译安装libtool工具
1. 获取源码 wget http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz tar xvf libtool-2.4.6.tar.gz -C ~ ...