注入从Java / Spring中的某个方法返回的String属性

时间:2012-04-20 22:40:17

标签: java spring

我有一个类似于以下的课程。

Class Parser{
  private String fileName;
  Parser(String fileName){
    this.fileName = fileName;
  }
}

现在我想使用Spring实例化这个类,但问题是fileName这里不是常量。它具有以下格式FileToBeParsed_<ddMMyyyy>,其中ddMMyyyy是当前日期时间(每当实例化发生时)。

所以我在考虑编写一个实用程序方法来生成正确的文件名但是如何在构造函数中注入它?

在spring配置中创建第三方/库/ JDK类的bean也是一个好习惯。

由于

2 个答案:

答案 0 :(得分:3)

您可以使用SimpleDateFormatter注入filenamePrefix并在构造函数中附加日期字符串,并解析一些新的Date()

Parser(String fileNamePrefix){
    String fileNameSuffix;
    //determine fileName suffix using new date and formatter
    ...

    this.fileName = fileNamePrefix + fileNameSuffix;
}

或者如果你不喜欢在构造函数中编码的想法,你可以创建一个FileNameGenerator类并使用构造函数注入使用xml构造函数-arg或Autowired注释注入它

@Autowired
Parser(FileNameGenerator fileNameGenerator){
    this.fileName = fileNameGenerator.getFileName();
}

答案 1 :(得分:3)

假设您正在使用支持弹簧EL的弹簧版本,那么这应该对您有用:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean name="sdf" class="java.text.SimpleDateFormat">
        <constructor-arg value="yyyy/MM/dd" />
    </bean>

    <bean name="parser" class="sandbox.Parser">
        <constructor-arg value="#{sdf.format(new java.util.Date())}" />
    </bean>
</beans>