java - Spring-IoC 容器-如何在属性中使用动态值? (就像 2 个字符串的连接)

标签 java spring

我正在使用 Spring 框架,但我不知道如何做这个简单的事情: 我想为一个 bean 提供一个字符串,该字符串是多个部分、一些固定变量和其他变量串联的结果

例如它可能是这样的: “myReportFile_20102101_1832.txt” - 第一部分是固定部分 - 第二部分是带有当前日期时间的时间戳 - 最后一部分是另一个固定部分

如何用最简单的方式实现?

非常感谢。

最佳答案

这听起来像是 Spring Expression Language 的工作(在 Spring 3.0 中引入)给我。虽然使用 factory bean 可能更容易对于该任务(它获取通过 IOC 注入(inject)的静态信息,并提供一个工厂方法来实例化您的其他 bean,包括计算出的动态信息)。像这样

class FileNameFactoryBean
{
    private Date date = new Date();
    private String prefix;
    private String postfix;

    public OtherBean createBean()
    {
        String filename = prefix + date.toString() + postfix;
        return new OtherBean(filename);
    }

    // Getters and Setters
}

然后在你的 bean 配置中是这样的

<bean id="fileNameFactory" class="package.FileNameFactoryBean">
    <property name="prefix" value="file_" />
    <property name="postfix" value=".txt" />
</bean>

<bean id="otherBean" factory-bean="fileNameFactory" factory-method="createBean"/>

关于java - Spring-IoC 容器-如何在属性中使用动态值? (就像 2 个字符串的连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2111437/

相关文章:

java - 如何检测待处理的 JDO 事务?

java - 如何让我的图像出现在随机位置?

java - 执行重复的 Spring Controller 代码的最佳方式?

java - 如何使用多个参数进行 Spring 构造函数注入(inject)

java - 有没有办法为公共(public)方法的子集生成 Javadoc?例如通过将公共(public)方法注释为 "not part of the public API"

java - 如何使用 selenium webdriver 在同一浏览器的另一个选项卡上打开 url?

java - Java中如何压缩switch结构?

java - 使用 Spring MVC 3.0 生成/使用对称 JSON

java - 使用 spring-data-jpa 和 spring-mvc 过滤数据库行

java - Spring AOP/AspectJ 记录方法的执行时间,但如何将参数传递给它? ( Spring 启动API)