Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >依赖于其他属性的Spring属性

依赖于其他属性的Spring属性
EN

Stack Overflow用户
提问于 2016-03-21 08:41:54
回答 2查看 40.5K关注 0票数 41

我希望拥有属性,这些属性可以通过spring中的@Value引用,这些属性只能依赖于其他属性来创建。特别是我有一个属性,该属性描述目录的文件系统位置。

代码语言:javascript
运行
AI代码解释
复制
myDir=/path/to/mydir

按照惯例,该目录中有一个文件,它总是被称为myfile.txt。

现在,我希望通过bean中的@Value注释同时访问目录和文件。有时我想以字符串的形式访问它们,有时以java.io.Files的形式访问它们,有时以java.io.Files的形式访问它们(顺便说一句,这是非常有效的!)但由于这种情况,按需串接字符串并不是一种选择。

所以我当然能做的就是声明两者,但我最终会

代码语言:javascript
运行
AI代码解释
复制
myDir=/path/to/mydir
myFile/path/to/mydir/myfile.txt

我想避免这种情况。

因此,我提出了一个@Configuration类,它接受该属性并将其添加为新的PropertySource:

代码语言:javascript
运行
AI代码解释
复制
@Autowired
private ConfigurableEnvironment environment;

@Value("${myDir}")
private void addCompleteFilenameAsProperty(Path myDir) {
    Path absoluteFilePath = myDir.resolve("myfile.txt");

    Map<String, Object> props = new HashMap<>();
    props.put("myFile, absoluteFilePath.toString());
    environment.getPropertySources().addFirst(new MapPropertySource("additional", props));
}

正如您所看到的,在我的上下文中,我甚至创建了一个PropertyEditor,它可以转换为_java.nio.file.Path_s。

现在的问题是,由于某种原因,这个“在我的机器上工作”(在我的IDE中),但是没有在预期的目标环境上运行。在那里我得到

代码语言:javascript
运行
AI代码解释
复制
java.lang.IllegalArgumentException: Could not resolve placeholder 'myFile' in string value "${myFile}"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-22 00:00:16

弹簧可以结合性能。

代码语言:javascript
运行
AI代码解释
复制
myDir=/path/to/mydir 
myFile=${myDir}/myfile.txt

您还可以使用默认值,而不必首先在属性中定义myFile

属性文件

代码语言:javascript
运行
AI代码解释
复制
myDir=/path/to/mydir

在课堂上:

代码语言:javascript
运行
AI代码解释
复制
@Value("#{myFile:${myDir}/myfile.txt}")
private String myFileName;
票数 82
EN

Stack Overflow用户

发布于 2021-10-27 02:52:31

Spring表达式可用于引用属性。

在我的例子中

代码语言:javascript
运行
AI代码解释
复制
query-parm=QueryParam1=
query-value=MyParamaterValue

现在,在Spring中绑定它们。

代码语言:javascript
运行
AI代码解释
复制
 @Configuration
    public class MyConfig {
    @Value("${query-param}${query-value}")
    private String queryString;
 }

上面的代码将把QueryParam1=MyParamaterValue注入变量queryString。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36136874

复制
相关文章
其他html元素和属性
disabled:标识元素不可用,就是用户不可互动,比如 button 的 disabled,就是按钮不能点击
鹤川
2023/03/21
7780
Spring 的属性注入
Spring 的属性注入 Spring 的属性注入,我们可以理解成之前说过的 DI (依赖注入)。 注入方式 对于类成员变量,注入方式有三种: 构造函数注入 属性 setter 注入 接口注入 spring 支持前两种注入方式 ---- 1. 构造方法注入 通过构造方法注入 Bean 的属性值或依赖的对象,它保证了 Bean 实例在实例化后就可以使用 构造器注入在 ``` 元素里声明的属性 举个例子: <!-- Bean 的构造方法的属性注入 --> <bean id="user" class="com.t
希希里之海
2019/06/18
1.1K0
spring事务的传播属性--@Transaction的Propagation属性
REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED),
IT云清
2019/01/22
2K0
【spring】属性注入
spring的属性注入是bean管理中的一个非常重要的内容,它可以通过有参数的构造函数注入属性,也可以通过set方法注入属性。包括基本类型的属性注入、对象类型的属性注入和复杂类型的属性注入。
全栈程序员站长
2022/08/10
3330
css hover改变其他class属性
css鼠标效果改变其他样式效果如图:图片代码参考.zmki_box_li li{ background-color: #F2F5FB; padding: 8px 15px!important; border-radius: 10px; transition: background-color 0.3s,color 0.3s;}.zmki_box_li li:hover{ background-color: #38b781; } .zmki_box_li li:hover i{
AlexTao
2021/03/08
3.8K0
Spring 中的属性赋值
如果使用配置文件中的值,需要指定配置文件的位置,使用 context:property-placeholder 标签。
wsuo
2020/07/30
1.9K0
Spring BeanUtils属性copy
maven依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.0.9.RELEASE</version> </dependency> 属性copy Demo public class BeanUtilsTest { @Data @AllArgsConstructor @NoArgsConstructor
夹胡碰
2020/08/26
4510
Spring的bean的属性注入
bean的属性注入3中方式。 1.0 接口注入。 2.0 构造函数注入。 3.0 setter方法的注入。
热心的社会主义接班人
2018/09/30
7480
Spring Boot配置属性
摘要:springboot数据库连接池使用策略以及对应的配置属性 正文: springboot数据库连接池使用策略 springboot官方文档介绍数据库连接池的使用策略如下: Production database connections can also be auto-configured using a pooling DataSource. Here’s the algorithm for choosing a specific implementation: W
itliusir
2018/05/21
2K0
spring加载properties属性
文章目录 1. spring有两种方式加载properties中的属性 1.1. 第一种 1.2. 第二种 spring有两种方式加载properties中的属性 第一种 使用<context:property-placeholder location="classpath:jdbc.properties" />在spring的配置文件中加载类路径下的资源文件 假设我们的jdbc.properties文件中的内容如下: 如果后面有重复的键值,将会覆盖前面的值 url=jdbc:mysql://loca
爱撒谎的男孩
2019/12/31
7010
Spring的事务属性意义——transactionAttributes
参考:http://yanglei008.iteye.com/blog/214874
全栈程序员站长
2021/05/19
2940
Spring 之加载配置属性文件和注解属性绑定
一般情况下我们会这样使用: 1.  首先在Spring的配置文件中加载属性文件: 然后在Java代码中使用@Value注解就可以注入值了,比如: <context:property-placeholder location="classpath:component.properties"   ignore-unresolvable="true"/>     @Value("${open_office_install_home}")     private String openOfficeInstallHo
冷冷
2018/02/08
1.1K0
spring-PropertyPlaceholderConfiger读取属性
spring在读取配置文件的时候,我们时常使用@Value注解来注入配置文件中的配置,在配置文件中也可以通过${}的方式来引用已经申明的配置,这是依靠Spring提供的PropertyPlaceholderConfigure来实现的。
leobhao
2022/06/28
6430
Spring Boot 属性配置解析
Spring Boot 3.1.0 支持的属性配置方式与2.x版本没有什么变动,按照以下的顺序处理,后面的配置将覆盖前面的配置: 1、SpringApplication.setDefaultProperties 指定的默认属性 2、@PropertySource注解配置 3、Jar包内部的application.properties 和 YAML 变量 4、Jar包内部的application-{profile}.properties 和 YAML 变量 5、Jar包外部的application.properties 和 YAML 变量 6、Jar包外部的application-{profile}.properties 和 YAML 变量 7、RandomValuePropertySource的随机值属性 8、操作系统环境变量 9、Java System属性 (System.getProperties()) 10、JNDI属性 11、ServletContext 初始化参数 12、ServletConfig 初始化参数 13、嵌入在环境变量或系统属性中的SPRING_APPLICATION_JSON 的属性 14、命令行参数 15、测试环境properties 属性 16、测试环境的@TestPropertySource 注解 17、Devtools 全局配置
阿提说说
2023/10/16
4190
Spring Boot 属性配置解析
logback.xml读取spring的属性
因为logback.xml和logback-test.xml会被logback组件直接读取,所以如果要交给spring管理,需要
十毛
2019/08/03
5.9K0
Spring源码-如何修改BeanDefinition的属性
Spring源码-如何修改BeanDefinition的属性 在实际开发中,我们有的时候并不是把所有的核心配置文件都存放到本地配置文件xxx..properties中的,而是通过远程去加载对应的配置文件信息。有的公司还有自己的独立配置中心系统,主要用来管理所有配置信息的。基于这个需求,其实我们利用Spring的后置处理器BeanFactoryPostProcessor扩展点是可以解决的,在Spring容器加载的时候就动态的远程获取到配置信息来更改配置。下面我们就一块来分析一下Spring给开发者预留的这个扩
秋日芒草
2018/05/15
2.6K0
Spring-引用Bean的属性值
将应用系统的配置信息存放在配置文件中并非总是最合适的,如果应用以集群的方式部署,或者希望在运行期动态调整引用的某些配置,这时,将配置信息放到数据库中不但方便集中管理,而且可以通过应用系统的管理界面动态维护,有效增强应用系统的可维护性。
小小工匠
2021/08/16
7750
spring源码分析 contextConfigLocation属性的位置
<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/config/application-context.xml /WEB-INF/config/cache-context.xml /WEB-INF/config/captcha-context.xml /WEB-
陈灬大灬海
2018/09/12
1.7K0
spring源码分析 contextConfigLocation属性的位置
聊聊spring cloud eureka的instanceEnabledOnit属性
本文主要研究下spring cloud eureka的instanceEnabledOnit属性
code4it
2018/09/17
7340
点击加载更多

相似问题

属性依赖于其他属性

131

依赖于其他属性的属性

14

接口属性依赖于其他属性

315

依赖于其他属性的依赖属性

52

大量依赖于其他属性的属性

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档