Spring @PropertySource @Value
@PropertySource
@PropertySource 注解用于指定资源文件读取的位置,它不仅能读取 properties 文件,也能读取xml文件,并且通过 YAML 解析器,配合自定义 PropertySourceFactory 实现解析YAML文件。
@Component @PropertySource(value = {"demo/props/demo.properties"}) public class ReadByPropertySourceAndValue { ... }
@SuppressWarnings("ConfigurationProperties") @Component @ConfigurationProperties @PropertySource(value = "classpath:code-message.properties", encoding = "UTF-8") public class CodeMessageConfiguration { ... }
示例:
package com.itha.config; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.PropertySource; import javax.sql.DataSource; /* 等同于 <context:property-placeholder location="classpath*:jdbc.properties"/> */ @PropertySource("classpath:jdbc.properties") public class JdbcConfig { /* 使用注入的形式,读取properties文件中的属性值, 等同于<property name="*******" value="${jdbc.driver}"/> */ @Value("${jdbc.driverClassName}") private String driver; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String userName; @Value("${jdbc.password}") private String password; /*定义dataSource的bean, 等同于<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> */ @Bean("dataSource") public DataSource getDataSource(){ //创建对象 DruidDataSource ds = new DruidDataSource(); /* 等同于set属性注入<property name="driverClassName" value="driver"/> */ ds.setDriverClassName(driver); ds.setUrl(url); ds.setUsername(userName); ds.setPassword(password); return ds; } }
REF: https://www.cnblogs.com/517cn/p/10946213.html
REF https://www.cnblogs.com/whx7762/p/7885735.html
@Value
@Value(“#{}”) 表示SpEL表达式通常用来获取bean的属性,或者调用bean的某个方法。当然还有可以表示常量。
@Value(“${}”) 注解从配置文件读取值。
@RestController @RequestMapping("/login") @Component public class LoginController { @Value("#{1}") private int number; //获取数字 1 @Value("#{'Spring Expression Language'}") //获取字符串常量 private String str; @Value("#{dataSource.url}") //获取bean的属性 private String jdbcUrl; @Autowired private DataSourceTransactionManager transactionManager; @RequestMapping("login") public String login(String name,String password) throws FileNotFoundException{ System.out.println(number); System.out.println(str); System.out.println(jdbcUrl); return "login"; } }
@Value("normal") private String normal; // 注入普通字符串 @Value("#{ systemProperties['os.name'] }") private String systemPropertiesName; // 注入操作系统属性 @Value("#{ T(java.lang.Math).random() * 100.0 }") private double randomNumber; //注入表达式结果 @Value("#{ beanInject.another }") private String fromAnotherBean; // 注入其他Bean属性:注入beanInject对象的属性another,类具体定义见下面 @Value("classpath:com/hry/spring/configinject/config.txt") private Resource resourceFile; // 注入文件资源 @Value("http://www.baidu.com") private Resource testUrl; // 注入URL资源
REF
https://blog.csdn.net/chuang504321176/article/details/80672740
https://blog.csdn.net/hry2015/article/details/72353994
分类:
[14] Java/JSP
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2011-12-26 由于这台计算机没有终端服务器客户端访问许可证,远程会话被中断,请跟服务器管理员联系