SpringBoot中使用类型安全的配置来注入大量自定义属性
场景
使用@Value注入每个自定义属性很麻烦,当自定义属性很多时就需要注入很多次。
SpringBoot提供了基于类型安全的配置方式,通过@ConfigurationProperties将properties中的属性和一个Bean中的属性关联,从而实现类型安全的配置。
实现
1.在application.properties中添加属性
book.author=Badao
book.name=SpringBoot
book.price=50
book.time=2019
book.other=liumang
book.qizhi=qizhi
2.在Controller中添加注解
@ConfigurationProperties(prefix="book")
3.区别
使用类型安全的配置不用在属性上添加@Value注解,但是所有属性要有set和get方法。
举例
新建BookController.java
package com.example.demo.controller;import javax.sound.midi.MidiDevice.Info;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@EnableAutoConfiguration
@Controller
@ConfigurationProperties(prefix="book")
public class BookController {private String author;private String name;private String price;private String time;private String other;private String qizhi;@RequestMapping("/bookInfo")@ResponseBodypublic String showInfo() {return author+":"+name+":"+price+":"+other+":"+qizhi;}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;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}public String getTime() {return time;}public void setTime(String time) {this.time = time;}public String getOther() {return other;}public void setOther(String other) {this.other = other;}public String getQizhi() {return qizhi;}public void setQizhi(String qizhi) {this.qizhi = qizhi;}public static void main(String[] args) {SpringApplication.run(BookController.class, args);}}
效果
运行上面main方法,打开浏览器输入:
http://localhost:8080/bookInfo
源码下载:
https://download.csdn.net/download/badao_liumang_qizhi/11046525
SpringBoot中使用类型安全的配置来注入大量自定义属性相关推荐
- Springboot中手动new的对象无法注入交给Spring容器管理的原因及解决办法
Springboot中Bean的注入 我们都知道,Springboot可以使用方法级别注解(@Bean)和类级别注解(@Controller.@Component.@Service等)加包扫描的方式注 ...
- RabbitMq学习笔记002---RabbitMq在SpringBoot中的应用_配置_使用_并且设置优先级
JAVA技术交流QQ群:170933152 首先新建一个SpringBoot的工程,空的就可以: 可以用idea 也可以用eclipse,也可以用sts,这类工具都可以 E:\StsWorkSpace ...
- 超简单的Springboot中的日志管理配置
本案例中可以了解,怎么配置日志的输出路径,输出格式(比如说zip格式),按日期进行划分(今天的日志输出为一个文件,明天的日志输出到另一个文件),在按日期划分的同时又按文件大小划分(比如说每天的日志记录 ...
- SpringBoot中多数据源的配置
1.场景还原 在实际项目中,一个工程配置多个数据源很常见,工程可能会根据业务或者模块访问不同的数据库或表:今天笔者就springboot中配置多数据源作个详细的讲解 2.实现方案 注意:一个应用工程中 ...
- springboot中关于springMvc默认配置,配置扩展,全面接管
1. apringMvc自动配置 springBoot整合springMVC时,提供了大量的自动化配置,相关的配置可查看org.springframework.boot.autoconfigure.w ...
- springboot 中使用 Mybatis 注解 配置 详解
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 传参方式 使用不同的传参方式: 使用@Param 之前博文中的项目使用了这种简单的传参方式: @In ...
- springboot中使用servlet通过配置类
在servlet目录下创建个servlet类,示例代码如下: package com.bjpowernode.springboot.servlet;import javax.servlet.Servl ...
- SpringBoot中LogBack日志输出配置记录
<?xml version="1.0" encoding="UTF-8"?><!-- Created by jinKai on 2017/1/ ...
- Springboot中使用Shiro的配置与realm的构建
//shiro配置package com.goodwe.admin.configure;import org.apache.shiro.mgt.SecurityManager; import org. ...
最新文章
- pve rust 能拆家吗_RUST:2020年9月第四周:向上向上再向上!
- Linux platform总线(1):总体框架
- 笔记本电脑如何强制关机_长按电源键强制关机会损害笔记本硬件吗?联想:不会但不建议...
- MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法...
- 安装错误 服务尚未启动_原创 | 西门子300软件安装出错处理大全
- JS调用后台方法大全
- 开源中国 精彩回顾_如何撰写精彩的事件回顾
- step与matlab的opc,wincc与matlab通过OPC通讯
- 深入理解 WordPress 数据库中的用户数据 wp_user
- ai会取代程序员吗_机器会取代程序员吗?
- 【问题4】Redis 的并发竞争问题是什么?了解 redis 事务的 CAS 方案吗?
- android 版本 6.0升级包,EMUI 6.0系统刷机包
- incaseformat病毒分析
- Docker 配置镜像加速器
- 计算机专业毕业了,还要不要参加培训班
- android 支付宝参数说明,android 支付宝 接入流程总结
- 《考研公共课复习指导》随笔及其它
- 23种设计模式之代理模式(动态代理)
- 日语基础复习 Day 16
- HDU 2011 多项式求和
热门文章
- linux 760权限,Linux 文件rwx权限问题 chmod 777 XXX 任何人拥有最高权限
- Java 获取文件路径
- Java中判断数组是否包含某值
- list集合去重的三种方式
- JavaWeb 入门篇(1)Maven创建Web项目 Idea配置tomcat
- SpringBoot-Security 具体案例、 实现安全框架、权限控制、aop切入
- 联想Ideapad 710S-13IKB笔记本安装win10系统不认硬盘解决方法
- mysql左连接_MySQL left join 左连接的通俗理解
- java接监控摄像头接口_离奇!深夜隧道内,12个摄像头突然一个接一个“瞎”了,监控员吓懵了...
- python编程定义圆_Python语言编程系列014——PyQt中自定义圆形指示灯