@Value
@Value("xxx")
字符串、字面量、Boolean值、$key支持SrpingEL(#{xxx})、配置文件中、環境變量中獲取值。
但是需要注意的是,@Value這個註解並不支持複雜數據類型的注入。像List、Map、Set之類的。
@ConfigurationProperties
一、@ConfigurationProperties.通過該註解,可以讀取到application.properties和application
配置文件中的屬性值。
1.註解中 prefix 屬性是指定Bean綁定哪個屬性變量。
2.支持鬆散綁定規則
3.類本身可以包私有化
4.類字段不需設置setter方法
二、鬆散規則中,一下形式的鍵值都可以綁定到bean對應的屬性中。
例子:
bean.varName=value
bean.varname=value
bean.var_name=value
bean.var-name=value
bean.VAR_NAME=value
注意,最後一種方式我個人多用於靜態變量或者系統變量。
三、激活 @ConfigurationProperties
1.需要數據綁定的Bean,必須標註@Component、 @ConfigurationProperties。
2.使用Java Configuration來獲取Bean,整不用再Bean上註解@Conponent。
3.@EnableConfigurationProperties註解,告知SpringBoot哪個Bean類需要數據綁定。
在特定於模塊的 @Configuration 類上使用@EnableConfigurationProperties,該類也可以利用
包私有的可見性對應用程序的其餘部分隱藏屬性。
@PropertyResource
該註解是用於定位非全局配置文件。該註解的value屬性是一個字符串數組,可以定義多個配置文件的路徑。
使用該註解,可以搭配@ConfigurationProperties註解,將配置文件的變量屬性值綁定到Bean中對應的屬性
上。
#jdbc.properties
mysql.jdbc_driverClassName=com.mysql.cj.jdbc.Driver
mysql.jdbc_url=jdbc:mysql://localhost:3306/pcloudpan?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT%2B8
mysql.jdbc_user=root
mysql.jdbc_password=root
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@PropertySource(value = {"classpath:jdbc.properties"})
@Component
@ConfigurationProperties(prefix = "mysql")
public class DataSourceConfig {
private String jdbcDriverClassName;
private String jdbcUrl;
private String jdbcUser;
private String jdbcPassword;
public String getJdbcDriverClassName() {
return jdbcDriverClassName;
}
public void setJdbcDriverClassName(String jdbcDriverClassName) {
this.jdbcDriverClassName = jdbcDriverClassName;
}
public String getJdbcUrl() {
return jdbcUrl;
}
public void setJdbcUrl(String jdbcUrl) {
this.jdbcUrl = jdbcUrl;
}
public String getJdbcUser() {
return jdbcUser;
}
public void setJdbcUser(String jdbcUser) {
this.jdbcUser = jdbcUser;
}
public String getJdbcPassword() {
return jdbcPassword;
}
public void setJdbcPassword(String jdbcPassword) {
this.jdbcPassword = jdbcPassword;
}
@Override
public String toString() {
return "DataSourceConfig{" +
"jdbcDriverClassName='" + jdbcDriverClassName + '\'' +
", jdbcUrl='" + jdbcUrl + '\'' +
", jdbcUser='" + jdbcUser + '\'' +
", jdbcPassword='" + jdbcPassword + '\'' +
'}';
}
}
@ImportResource
該註解用於導入Spring的配置文件。其中value屬性是一個數組,支持多個配置文件的導入。但是現在一般都用註解
@Bean、@Conponant、@Controller、@Service...來對Bean進行註冊,加入到SpringIoc容器中。
例如:@ImportResource("classpath:xxx.xml","classpath:xxxx.xml")
@Configuration
被該註解的標註的類是配置類,通過該註解,SpringBoot得知這是一個配置類,在這裏我們可以對spring進行一些配置。
在該類我們可以在方法上使用@Bean做Bean的註冊、注入,獲取數據源的配置。在配置類上標註@ComponentScan,指定
掃描包;並把該包下被@Component所標註的類加載進Spring的容器中。
@Configuration
public class SpringAppConfig {
@Bean
public TestService testService(){
return new TestService();
}
}