我想从单个类创建许多bean,所有bean都要在当前应用程序上下文中实例化,每个bean都基于属性文件中的前缀属性.我给出了一个我想要实现的例子.任何有关如何在没有过多代码的情况下执行此操作的提示(例如,没有多个类,复杂的工厂等)将不胜感激.
XML配置:
<bean id="bean1" class="Mybean">
<property name="prefix" value="bean1"/>
</bean>
<bean id="bean2" class="Mybean">
<property name="prefix" value="bean2"/>
</bean>
<bean id="bean3" class="Mybean">
<property name="prefix" value="bean3"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
属性文件:
bean1.name=alfred
bean2.name=bobby
bean3.name=charlie
Run Code Online (Sandbox Code Playgroud)
类:
class Mybean {
@Value("${#{prefix}.name}")
String name;
}
Run Code Online (Sandbox Code Playgroud)
主类:
public class Main {
@Autowired
List<MyBean> mybeans;
}
Run Code Online (Sandbox Code Playgroud) @Value当我的属性源是其子类时,我正在尝试使用Spring设置字符串的值PropertyPlaceholderConfigurer.有人知道怎么做吗 ?
我需要构建一个动态路径,将属性文件中定义的值与 SpEL 表达式的结果相结合,但找不到正确的语法来实现这一目标。
我的情况是这样的:
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:myprop.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="false"/>
</bean>
<bean id="fileNameToFSTree"
class="foo.bar.FileNameToFSTree"/>
<int-file:outbound-channel-adapter id="filesOut"
auto-create-directory="true"
directory-expression="${outDir} + @fileNameToFSTree.nameToTree(payload)"
delete-source-files="true"/>
Run Code Online (Sandbox Code Playgroud)
鉴于该myprop.properties文件包含一个变量outDir,我想在directory-expression文件出站的前面添加该变量。
显然它会定期评估,${outDir}但我得到以下异常:
org.springframework.expression.spel.SpelParseException: Expression [/tmp/output + @fileNameToFSTree.nameToTree(payload)] @0: EL1070E: Problem parsing left operand
Run Code Online (Sandbox Code Playgroud)
我在文档或示例中没有发现这种情况的痕迹。
有什么提示吗?