@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();
}
}