SpringBoot之读取配置文件

@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
//DataSourceConfig 测试
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
    //@ComponentScan({"com.nubipan.sblearnling.service"})
    public class SpringAppConfig {
        @Bean
        public TestService testService(){
            return new TestService();
        }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值