Spring读取外部的资源配置文件—@PropertySource和@Value实现资源文件配置
2023-09-27 14:29:11 时间
通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值;
@PropertySource注解主要是让Spring的Environment接口读取属性配置文件用的,标识在@Configuration配置类上;
@Value注解可以用在字段和方法上,通常用于从属性配置文件中读取属性值,也可以设置默认值。
具体用法:
@PropertySource(value = { "classpath:config.properties" }, ignoreResourceNotFound = true) public class UserSpringConfig { ... }
a、配置多个配置文件
@PropertySource(value = { "classpath:jdbc.properties", "classpath:config.properties"}) public class UserSpringConfig { ... }
b、忽略不存在的配置文件
@PropertySource(value = { "classpath:jdbc.properties","classpath:config.properties"}, ignoreResourceNotFound = true) public class UserSpringConfig { ... }
资源文件配置示例
1、创建配置文件,${project}/src/main/resources/config.properties
username=zhangsan password=123456 age=20
2、读取外部的资源配置文件
package com.lynch.javaconfig; import org.springframework.beans.factory.annotation.Value; public class User { @Value("${username}") private String username; @Value("${password}") private String password; @Value("${age}") private Integer age; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User [username=" + username + ", password=" + password + ", age=" + age + "]"; } }
3、编写SpringConfig,用于实例化Spring容器
package com.lynch.javaconfig; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; //通过@Configuration注解来表明该类是一个Spring的配置,相当于一个xml文件 @Configuration @ComponentScan(basePackages = "com.lynch.javaconfig") @PropertySource(value = { "classpath:config.properties"}, ignoreResourceNotFound = true) public class UserSpringConfig { @Bean public User user(){ return new User(); } }
4、编写测试方法,用于启动Spring容器
package com.lynch.javaconfig; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class UserApplication { public static void main(String[] args) { // 通过Java配置来实例化Spring容器 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(UserSpringConfig.class); System.out.println(context.getBean(User.class)); // 销毁该容器 context.destroy(); } }
5、执行结果
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. User [username=Administrator, password=123456, age=20] 九月 16, 2018 9:04:45 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext doClose
注意,从执行结果发现username输出的是"Administrator",而不是"zhangsan",那是因为系统变量跟配置文件存在相同变量时,优先从系统变量获取,故username输出的是"Administrator"。
相关文章
- Spring Boot 日志文件 ——打印日志和日志持久化详解
- Spring Cloud的注册中心Eureka
- spring使用@Value标签读取*.properties文件的中文乱码问题的解决
- 为什么在Spring的配置里,最好不要配置xsd文件的版本号
- Spring Websocket实现文本、图片、声音、文件下载及推送、接收及显示(集群模式)
- Spring MVC 配置文件dispatcher-servlet.xml 文件详解
- spring cloud 中Sidecar支持异构平台的微服务
- spring mvc 3.0 实现文件上传功能
- Spring Data JPA 一:环境搭建
- Spring MVC、MyBatis整合文件配置详解
- Spring JDBC
- Spring Boot(四):Thymeleaf 使用详解
- Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现
- spring sts4 如何添加tomcat 服务
- Spring入门程序_07***【Bean的常用装配(1)——基于Xml装配(使用 “构造注入” )】
- 【重温SSM框架系列】3 - Spring注解开发(注解代替xml文件配置)
- spring 配置属性的详细信息
- Spring源码分析
- Spring Boot上传文件(multipart和json)到服务器DTO方法及示例代码
- Spring Batch 步骤对象-返回状态-ExitStatus