1、ConfigurationProperties
在類上通過@ConfigurationProperties注解聲明當前類為屬性讀取類。
舉例:
@ConfigurationProperties(prefix = "jdbc")
prefix="jdbc" 讀取屬性文件中,前綴為jdbc的值。
在類上定義各個屬性,名稱必須與屬性文件中 jdbc. 后面部分一致。
需要注意的是,如果我們沒有指定屬性文件的地址,SpringBoot 默認讀取 application.properties/application.yml 中的屬性文件名。
@Data @ConfigurationProperties(prefix = "jdbc") class JdbcProperties { private String url; private String driverClaprivate; private String username; private String password; }
2、EnableConfigurationProperties
@ConfigurationProperties 注解我們可以理解成用來把 properties 配置文件轉化為 Bean 使用的,而 @EnableConfigurationProperties 注解的作用是讓 @ConfigurationProperties 注解生效。
如果只配置 @ConfigurationProperties 注解,在 IOC 容器中是獲取不到 properties 配置文件轉化的 Bean 的。
那么我們如何獲取我們使用了 @ConfigurationProperties 注解的類呢?
2.1 @Autowired 注入
@Autowired private JdbcProperties prop;
2.2 構造函數注入
private JdbcProperties prop; public JdbcConfig(Jdbcproperties prop){ this.prop = prop; }
2.3 聲明有@Bean的方法參數注入
@Bean public TestBean dataSource(JdbcProperties jdbcProperties) { syso(jdbcProperties.getUsername());// syso 簡寫 return new TestBean; }
通過上方三種方式,都可以在 JdbcProperties jdbcProperties 中直接拿到注入的數據。