springboot自定义属性的一些知识

自定义属性有几种方式,但是要先在application.properties(有些人喜欢改成application.yml)里写上自己要

定义的属性,

 

1 第一种方式 @Value

 

 

如上图 需要一个属性就要去定义再用Value注解 (因为是在controller里写的 因此有@RequestMapping注解)

由此可见 需要用到每一个自定义属性都会很麻烦,当自定义的属性多了 这样就不行了 

 

2 第二种方式 @ConfigurationProperties

  首先要添加依赖

 

   当有很多自定义属性的时候,可以把它们当做字段建立一个javaBean,这样会简便很多

 

 

  我们需要用到@ConfigurationProperties注解,需要注意的是要记得写上prefix,因为prefix定义配置文件中的属性

  如上图,如果在这个Bean上加上了@Component这个注解,可以直接在应用类直接用 如下图

 

  还是要定义这个类

 然后就可以直接调用。

当然还有一种情况,就是Bean上不加@Component这个注解的时候,那就需要在应用Bean的类或者application类里加上@EnableConfigurationProperties( {Bean.class} )这个注解,注解后面括号里要写上所建立的Bean.class。 这个注解其实就是支持@ConfigurationProperties这个注解使这个其生效的,因为加上@Component就是把Bean注入到spring容器中,这两者(@Component和@EnableConfigurationProperties({Bean.class}))取其中的一个,但可以只用@Component。

但是@EnableConfigurationProperties({Bean.class}))和@Component不能一起使用,因为@EnableConfigurationProperties({Bean.class}))的意思就相当于把Bean注入spring容器,不然springboot不能启动,报错如下

 

 意思是你的应用类里面需要一个Bean,但是找到两个Bean。因此这两个注解不能同时使用!

如果要同时使用@EnableConfigurationProperties注解和@Component注解,那@EnableConfigurationProperties注解后面不需要再特别加上Bean.class,那这个注解的意思就是@EnableConfigurationProperties注解是用来开启对@ConfigurationProperties注解配置Bean的支持。 也就是@EnableConfigurationProperties注解告诉Spring Boot 使能支持@ConfigurationProperties(总的来说就是后面加了Bean.class就只说明把这个Bean注入spring容器)

 

最后 如有错误请指出,谢谢!

 

posted @ 2018-08-23 11:21  沉醉街角弥漫的尼古丁  阅读(272)  评论(0编辑  收藏  举报