游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

springboot读取配置文件中的属性并实现自动注入

  今天这篇文章主要来和大家分享一下,在springboot中,如何读取配置文件中的属性,
  我们知道在比较大型的项目的开发中,比较经常修改的属性我们一般都是不会在代码里面写死的,而是将其定义在配置文件中,之后如果修改的话,我们可以直接去配置文件中修改,那么在springboot的项目中,我们应该如何实现这个呢?
  接下来我们以一个实例的形式教大家如何读取配置文件中的属性并使用。
  以yml中数据库的配置为例,配置文件如下:配置文件jdbc:driverClassName:com。mysql。jdbc。Driverurl:jdbc:mysql:127。0。0。1:3306testusername:rootpassword:root(1)使用注解Value映射
  首先第一种方法,使用Value注解进行映射,这种方法适用于对象的参数比较少的情况,我们可以直接在对象的属性上使用Value注解,在其中以{}的形式传入配置文件中对应的属性,
  同时需要在该类的上方使用Configuration注解,将该类作为配置文件加入,在启动项目的时候实现注入。
  实例如下:ConfigurationpublicclassJdbcProperties{Value({jdbc。driverClassName})privateStringdriverClassName;Value({jdbc。url})privateStringurl;Value({jdbc。username})privateStringusername;Value({jdbc。password})privateStringpassword;}
  这样我们在使用该对象的属性值的时候,可以直接通过调用该对象的属性获取。(2)使用ConfigurationProperties映射
  第二种方法相对于第一种方法更简单一些,不需要在每一个字段的上面的使用Value注解,直接使用一个ConfigurationProperties注解标注在类上即可,在其中传入的参数为在yml配置文件上参数的前缀,但是效果是和第一种是一样的,ConfigurationProperties注解声明当前类为配置读取类
  prefixjdbc表示读取前缀为jdbc的属性
  会将配置文件中前缀为prefix的属性赋给类中同名的字段
  实例如下:ConfigurationProperties(prefixjdbc)publicclassJdbcProperties{privateStringdriverClassName;privateStringurl;privateStringusername;privateStringpassword;}
  使用该注解时有一点需要注意:必须保证属性名称和字段一模一样,且类需要提供字段的setter方法
  但是如果只使用ConfigurationProperties注解是没有效果的,他并不会讲配置文件中的参数和属性匹配。他需要配合其他在启动项目时会生效的注解一起使用才会生效,
  一种方法是在JdbcProperties类上添加一个Configuration注解,将其标识为配置类,
  如下:ConfigurationConfigurationProperties(prefixjdbc)publicclassJdbcProperties{privateStringdriverClassName;privateStringurl;privateStringusername;privateStringpassword;}
  或者还有第二种方法:我们还可以在Spring中使用这个配置读取类,通过EnableConfigurationProperties注解可以将指定的配置读取类的对象加载到Spring容器,也就是说,在其他配置类上使用一个EnableConfigurationProperties注解,来将配置文件的参数和JdbcProperties类的属性绑定。这样就不需要在JdbcProperties类上使用Configuration注解了,
  实例如下:ConfigurationEnableConfigurationProperties(JdbcProperties。class)publicclassJdbcConfig{AutowiredprivateJdbcPropertiesprop;这种方式不需要Autowired注入字段,也不需要构造函数注入,直接在方法中定义配置读取类的形参,Springboot在创建DataSource对象时会自动注入JdbcProperties对象BeanpublicDataSourcedataSource(){DruidDataSourcedataSourcenewDruidDataSource();dataSource。setDriverClassName(prop。getDriverClassName());dataSource。setUrl(prop。getUrl());dataSource。setUsername(prop。getUsername());dataSource。setPassword(prop。getPassword());returndataSource;}}(3)推荐使用:极简方式Bean和ConfigurationProperties注解一起使用,
  对于我个人的习惯而言,在使用的时候,我还是喜欢使用第三种方法,这种方法使用起来最简单,而且也最实用,
  在一个带Configuration注解的配置类中,我们可以直接把ConfigurationProperties(prefixjdbc)注解声明在需要使用的Bean的方法上,Springboot会自动将配置文件中以prefix开头的属性赋给要创建对象的类的同名字段上,使用前提:要求类该类必须提供了setter方法
  使用这种方法的好处就是不要在bean上做任何额外的注解声明。统一将需要进行注入容易或和配置文件参数进行绑定的类放置在一个带Configuration注解的类中即可!ConfigurationpublicclassJdbcConfig{BeanConfigurationProperties(prefixjdbc)publicJdbcPropertiesjdbcProperties(){returnnewJdbcProperties();}}
  但是以上的操作,只是将bean注入到了容器中,那么在其他类中使用的话,还是需要在每一个对象上使用Autowired注解,那么有没有什么方法可以不使用Autowired注解来声明自动注入呢?RequiredArgsConstructor注解实现自动注入
  使用RequiredArgsConstructor注解可以代替autowired注解实现对象属性的自动注入,
  使用场景:需要注入很多的mapper接口或者另外的service接口,这时候就会写很多的Autowired注解,代码看起来很乱,lombok提供了一个注解:
  RequiredArgsConstructor(onConstructor(Autowired))
  写在类上可以代替Autowired注解,需要注意的是在注入时需要用final定义,或者使用notnull注解RestControllerRequiredArgsConstructorpublicclassLoginTest{AutowiredprivatefinalLoginPropertiesloginProperties;RequestMapping(login01)publicvoidloginTest01(){System。out。println(进入loginTest01方法);StringlanguageloginProperties。getLanguage();System。out。println(language);}}
  这样就可以避免写入重复的Autowired了,但是就是需要注意对象必须是final修饰的才行,
  总结一下,如果需要将类属性与配置文件中的参数绑定,并且注入到容器中时,推荐使用第三种方法和RequiredArgsConstructor注解来实现!!!
  原文地址:https:bbs。huaweicloud。comblogs324165?utmsource51ctoutmmediumbbsexutmcampaignotherutmcontentcontent
  原文作者:灰小猿

撬装加油站对物流业的影响新能源车如何行稳致远碳达峰、碳中和是今年比较热的话题之一,相关企业应该如何应对3060目标的重大挑战?其中的能耗大户物流行业,要如何控制碳排放量、提升能源使用效率、降低能耗,成为亟待解决的问题。……各种运动,不在话下HAKIIaction耳机体验前言随着众多手机厂商取消3。5mm耳机孔,越来越多的厂商都推出了自家的TWS蓝牙耳机,这么多种类的蓝牙耳机,很多小伙伴都不知道该如何选择一副适合自己的TWS蓝牙耳机,尤其……达成成就Android手表的天花板,OPPOWatch2评测Android手表一直以来都是Android手机用户们心中的一个痛,毕竟隔壁家AppleWatch确实做的很好。当然这几年也陆续出过不少比较优秀的Android手表,但总有各种……跨界话剧演出成功,肖战获得导演好评10月28日,肖战参演的央华版话剧《如梦之梦》在深圳完美谢幕,肖战饰演的5号病人,获得了现场观众和导演的赞誉。导演程辉专门在微博分享了《如梦之梦》的观后感,对演出情况和演……麒麟芯片造不了,华为要完蛋了吗?前阵子海对面又对华为出手了,这次更干脆,直接让华为的麒麟芯片没有可代工的厂家,再加上去年海对面对华为的制裁,好像华为一下就从天堂跌到了谷底,但是事情很严重,但没有我们想的那么严……PSVR落地后,Rift和HTCvive将何去何从2016年10月13日,sony公司的PSVR在中国大陆正式发货,全面冲击了由HTCvive主导的大陆VR市场。PSVR以其亲民的售价和背后playstation平台丰富……美女硕士电视求职成功底薪1。3万,之后公司的做法让人大跌眼镜美女硕士生电视求职成功底薪1万3报到时变4000在电视求职节目中,杨斯涵和一家公司达成聘用意向,公司开出13000元的底薪给予杨斯涵销售运营总监助理的职位,公司随后……11代酷睿绝佳搭档华硕500系主板618特惠《海洋之王》是由3DClouds制作的一款开放世界航海类RPG。玩家将扮演一名海贼,以成为海贼王为目标打败强劲的对手、寻找奇妙的宝藏。游戏中玩家可以根据自己的游戏风格选择战斗技……大头君有点困为了胡闹厨房,我又入手了一个手柄Switch作为一款2017年就发布的游戏主机,凭借着其主机掌机二合一的游戏体验,以及后续不断推出的限定版机型,使其热度一直不减,我也在去年的时候看到价格合适入手了一台港版动森……梦露女神不得安息,一帮男人疯魔操作你是我的玛丽莲梦露是个传奇,就连天不怕地不怕的麦当娜都向其致敬。她是上世纪五六十年代的性感象征之一,掀起了一股前所未有的审美浪潮。只要她站到那里,所有男人瞬间为之倾倒。……国庆长假换手机怎么选?三款2K档机型好价必备,闭眼入不后悔有消息称,国庆大假将有7亿人选择出游,无论是高速还是景点到处都是人从众,看着他们在堵堵堵的时候,没有外出游玩的小伙伴不妨趁此时机,入手一款心仪已久的手机来的舒服。纵观现售手机2……10万出头的硬派SUV,功能齐全还带T,就是不能越野北京越野是国内名列前茅的自主越野品牌,其旗下的BJ40、BJ80都是大家所孰知的车型。今天小编要说的是北京越野21款BJ30,这款车的价格非常亲民,仅需10万出头就能让你体验到……
华为手机天气小工具误删移除丢失不见了怎么办?手机天气小工具,让我们可以随时掌控时间,掌控天气,令我们的工作,出游更得心应手、游刃有余。可如果桌面天气不小心被误删了,在窗口小工具里找不到,是不是只能恢复出厂设置了呢?……VIM从入门到精通VIM命令操作手册!速速来领它来了,它来了,vim学习笔记和vim命令操作手册终于整理好了,有需要的小伙伴,可以来领取啦!Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的……艾特铭客AbramTekE8真无线蓝牙耳机,充满能量的小不点自从接触第一款真无线蓝牙耳机以来,已经陆陆续续体验过几款真无线耳机,体验的多了,慢慢的也就没了大的惊喜,感觉相同价位的耳机也没有什么太大的差别。直到这段时间有幸体验了艾特铭客A……卖艺老人琴声优雅遛弯儿老人梆子高亢外国朋友记录中国文化夜晚西安一地铁站外,一位老人坐在花台边弹月琴卖艺,来了一位听着收音机遛弯儿的老人也坐到花台上。看到我在拍照也从包里拿出梆子,开始唱了起来。老人已经70岁了,一段唱下……入门就是中高配,还带多项同级独有配置,这样你还觉得赛那贵吗?早前,广汽丰田通过线上开启了赛那的预售,车型预售价区间为3242万。作为广汽丰田今年的重磅车型,赛那自发布起一直有着极高的市场关注度,此次公开预售价格后不少人表示确实不便宜。……努比亚Z20年度影像旗舰手机发布,这才是才是摄影旗舰该有的样2011年,美国著名的《消费者报告》在针对171款相机、摄像机以及45款智能手机测评之后,得出的结论是用智能手机拍摄的画质无法取代相机。但就在一年之后,年轻的努比亚携初代旗舰机……那些LED显示屏市场不经意间释放的变数将如何选择面对周所周知,对于当前的中国LED显示屏市场来说,大量从业多年的业内人士,正在从当年的豪情万丈、激情似火,步入了疲乏、困顿、迷茫期。不过,仔细梳理最近几年的市场发展和走势,我们可以……撬装加油站有安全隐患吗15万预算选啥车?新能源仓老实说,即使是普通的加油站也经常发生漏油或爆燃事故。撬装式加油(企业加油站)站即使安全性高,但小隐患还是存在的。关键在于如何将事故率降低到可控范围内橇装加油站很多没……iPhone这个致命缺陷,被解决了大家好,我是潘达。作为苹果用户来说,无法安装外部软件、无法修改字体等烦恼一大堆。但这些都是小问题,最最最大的烦恼就是不能使用长截图了!潘达这个iPhone6的……工业主板与普通主板的区别,从哪几点去区分它们?主板制造质量的高低,决定了硬件系统的稳定性。计算机主机中的各个部件都是通过主板连接的,计算机在正常运行时对系统内存、存储设备和其他IO设备的操控都必须通过主板来完成。计算……阳光帅气,俊逸担当,成龙和肖战共唱中华力量10月16日晚,山西大同,零下8度,第6届成龙国际电影周闭幕式,CCTV6进行了现场直播。一袭白色中山装的肖战参加,并与成龙共唱《中华力量》,肖战同时击鼓表演。合唱……FILECOIN上线一周年,全网存储已突破12EIB10月15日,是Filecoin上线一周年,也是Filecoin网络生态的第二次减产,当前全网存储容量已突破12EiB。FILECOIN上线一周年,全网存储已突破12EI……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网