spring boot @ConfigurationProperties和@EnableConfigurationProperties的作用和区别
Posted @不会Ayy的拉马尔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot @ConfigurationProperties和@EnableConfigurationProperties的作用和区别相关的知识,希望对你有一定的参考价值。
学习SpringBoot时对这两个注解的作用理解的不是很清楚,特此记录一下:
@ConfigurationProperties:
被标注的类会使用外部文件给bean注入属性
示例:
menu类
application.yml:
menu:
id: 1
name: nema1
url: url1
parent_id: pid1
menu_order: morder1
menu_icon: micon1
menu_type: mtype
test:
@RunWith(SpringRunner.class)
@SpringBootTest
public class CrudSpringbootEasyuiApplicationTests
@Autowired
private Menu menu;
@Test
public void test()
System.out.println(menu);
输出:
Menuid=1, name='nema1', url='url1', parent_id='pid1', menu_order='morder1', menu_icon='micon1', menu_type='mtype1'
这里我配合@Component一起使用,先将menu类注册为bean,再通过@ConfigurationProperties注解使用外部yml文件将属性注入。 其实也可以配合任何可以将一个类注册为bean的注解一起使用,Springboot内部经常配合@Bean一起使用。
@EnableConfigurationProperties:
作用:启用配置属性类
示例:
MyServerConfigurationProperties类:
@ConfigurationProperties(prefix = "myserver")
public class MyServerConfigurationProperties
private int port;
private String url;
private String brand;
//省略get set方法
application.yml
myserver:
port: 8080
url: localhost
brand: alibaba
test:
@RunWith(SpringRunner.class)
@SpringBootTest
@EnableConfigurationProperties(MyServerConfigurationProperties.class)
public class CrudSpringbootEasyuiApplicationTests
@Autowired
private MyServerConfigurationProperties properties;
@Test
public void test()
int port = properties.getPort();
String url = properties.getUrl();
String brand = properties.getBrand();
System.out.println("port: " + port);
System.out.println("url: " + url);
System.out.println("brand: " + brand);
配置了一个MyServerConfigurationProperties类,编写了yml文件,并在test类上添加了@EnableConfigurationProperties注解,将value设置为MyServerConfigurationProperties.class,这样在该类中就可以将该Properties类注入并使用了。
以上是关于spring boot @ConfigurationProperties和@EnableConfigurationProperties的作用和区别的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse编写SpringBoot中的Application.yml没有任何提示
Spring Security getAuthentication() 返回 null
Spring 工具类 ConfigurationClassParser 分析得到配置类
Consider defining a bean of type ‘com.example.springbootdemo.mapper.UserMapper‘ in your configuratio