聊聊@value注解和@ConfigurationProperties注解的使用
@value注解和@ConfigurationProperties注解
@value读取默认配置
yml文件内容如下(装了STS插件以后即可直接使用,改后缀就行了)
user: username: xiongda sex: man age: 20 school: name: xtu location: hunan
备注:一定要注意之间要留空格,发现颜色变绿色了才是正确的格式,这个坑我刚踩
package com.example.demo.service.impl; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.example.demo.service.ReadConfigService; @Service public class ReadConfigServiceImpl implements ReadConfigService { @Value(value="${user.username}") private String username; @Value(value="${user.sex}") private String sex; @Value(value="${user.age}") private String age; @Value(value="${school.name}") private String name; @Value(value="${school.location}") private String location; @Override public String getUserMessage() { return "user ="+username+" sex ="+sex+" age="+age; } @Override public String getAuthorMessage() { return "schoolname="+name+"location="+location; } }
@ConfigurationProperties读取默认配置
package com.example.demo.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix="user") public class HelloConfig { private String username; private String sex; private String age; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
调用的controller层
package com.example.demo.web; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.example.demo.config.HelloConfig; import com.example.demo.service.ReadConfigService; @RestController @RequestMapping("hello") public class HelloController { @Autowired ReadConfigService readConfigService; @Autowired HelloConfig helloConfig; @RequestMapping("/user") public String say() { return "username "+helloConfig.getUsername()+" sex "+helloConfig.getSex()+" age "+helloConfig.getAge(); } @RequestMapping("/school") public String school() { return readConfigService.getAuthorMessage(); } }
@ConfigurationProperties和@Value使用上的一点区别
@ConfigurationProperties和@Value的一个共同点就是从配置文件中读取配置项。
发现有一点区别,我项目配置中并没有配置hello.msg ,当使用第一段代码时,启动后读取到msg为null,而第二段代码则会抛出异常。
第二段代码有个好处,就是防止我们配置项遗漏,当遗漏时,启动程序肯定出错,这样避免了一些因为遗漏配置项导致的BUG.
第一段代码
import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties("hello") public class HelloProperties { private String msg; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
第二段代码
import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class Hello2Properties { @Value("${hello.msg}") private String msg; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
java使用elasticsearch分组进行聚合查询过程解析
这篇文章主要介绍了java使用elasticsearch分组进行聚合查询过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-02-02解决SpringBoot application.yaml文件配置schema 无法执行sql问题
这篇文章主要介绍了解决SpringBoot application.yaml文件配置schema 无法执行sql问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08java web实现简单登录注册功能全过程(eclipse,mysql)
前期我们学习了javaweb项目用JDBC连接数据库,还有数据库的建表功能,下面这篇文章主要给大家介绍了关于java web实现简单登录注册功能的相关资料,需要的朋友可以参考下2022-07-07spring kafka框架中@KafkaListener 注解解读和使用案例
Kafka 目前主要作为一个分布式的发布订阅式的消息系统使用,也是目前最流行的消息队列系统之一,这篇文章主要介绍了kafka @KafkaListener 注解解读,需要的朋友可以参考下2023-02-02
最新评论