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容器)
最后 如有错误请指出,谢谢!