SpringBoot中PropertySource注解

1.PropertySource注解加载指定的属性文件

Spring框架提供了PropertySource注解,目的是加载指定的属性文件。

@Component

@PropertySource(value= {"classpath:config/jdbc-bainuo-dev.properties"},ignoreResourceNotFound=false,encoding="UTF-8",name="jdbc-bainuo-dev.properties",)

public class CustomerDataSourceConfig1  {

private  String url;

    public String getUrl() {

        return url;

    }

    public void setUrl(String url) {

        this.url = url;

    }

    @Override

    public String toString() {

        return "CustomerDataSourceConfig{" +

                "url='" + url + '\'' +

                '}';

    }

}

上述的代码目的是加载classpath路径中config文件中的jdbc-bainuo-dev.properties。其中encoding用于指定读取属性文件所使用的编码,ignoreResourceNotFound含义是当指定的配置文件不存在是否报错,比如上文件中指定的加载属性文件是jdbc-bainuo-dev.properties。如果该文件不存在,则ignoreResourceNotFound为true的时候,程序不会报错,默认为false.

value值是设置需要加载的属性文件,可以一次加载多个,name的值我们设置的是jdbc-bainuo-dev.properties。这个值在springboot的环境中必须是唯一的,如果不设置,则值为:“class path resource [config/jdbc-bainuo-dev.properteis]”.上面我们配置的是classpath:config/jdbc-bainuo-dev.properties,因此Spring发现是classpath开头的,因此最终使用的是Resource的子类ClassPathResource。

如果@ProPertySource中没有设置name值,则name的值的生成规则是:根据value值查找到最终封装的Resource子类,然后调用具体的Resource子类的实例对象中的getDescription方法,其返回值为最终的name值。

jdbc-bainuo-dev.properties文件内容如下:

spring.datasource.shareniu.url=shareniu

application.properties文件内容如下:

spring.profiles.active=dev
@SpringBootApplication

public class DemoApplication {

public static void main(String[] args) {

	SpringApplication springApplication = new SpringApplication(DemoApplication.class);

	ConfigurableApplicationContext configurableApplicationContext = springApplication.run(args);

	CustomerDataSourceConfig1 customerDataSourceConfig = configurableApplicationContext

	.getBean(CustomerDataSourceConfig1.class);

	System.out.print(customerDataSourceConfig);

}

}

运行上述的代码,程序的输出如下:

CustomerDataSourceConfig{url='null'}

为什么url为null,因为我们没有将spring.datasource.shareniu.url属性值自动注入到CustomerDataSourceConfig1类中的url属性中。

@Component

@PropertySource( name="jdbc-bainuo-dev.properties",value= {"classpath:config/jdbc-bainuo-dev.properties"},ignoreResourceNotFound=false,encoding="UTF-8")

public class CustomerDataSourceConfig1  {

	@Value("${spring.datasource.shareniu.url}")

	private  String url;

}

另外我们还可以使用ConfigurationProperties注解

@Component
@ConfigurationProperties(prefix = "spring.datasource.shareniu")  
@PropertySource( name="jdbc-bainuo-dev.properties",value= {"classpath:config/jdbc-bainuo-dev.properties"},ignoreResourceNotFound=false,encoding="UTF-8")
public class CustomerDataSourceConfig1  {
   	private  String url;
  }

ignoreUnkownFields:忽略未知的字段。

ignoreInvalidFields:是否忽略验证失败的字段。这个怎么理解?比如我们在配置文件中配置了一具字符串类型的变量,类中的字段是int类型,那肯定会报错,如果我们可以容忍,则需要配置该属性为true,默认值为false。

 

最后欢迎大家访问我的个人网站:1024s​​​​​​​

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值