Spring :如何用注释替换构造函数-arg?

2022-09-04 20:27:05

可能的重复:
将<构造函数-arg>替换为弹簧注释

我想用注释替换XML应用程序上下文配置。

如何用固定的构造函数参数替换简单的bean?

示例 :

<bean id="myBean" class="test.MyBean">
    <constructor-arg index="0" value="$MYDIR/myfile.xml"/>
    <constructor-arg index="1" value="$MYDIR/myfile.xsd"/>
</bean>

我正在阅读有关@Value的一些解释,但我真的不明白如何传递一些固定值...

是否可以在部署 Web 应用程序时加载此 Bean?

谢谢。


答案 1

我想你所追求的是这个:

@Component
public class MyBean {
    private String xmlFile;
    private String xsdFile;

    @Autowired
    public MyBean(@Value("$MYDIR/myfile.xml") final String xmlFile,
            @Value("$MYDIR/myfile.xsd") final String xsdFile) {
        this.xmlFile = xmlFile;
        this.xsdFile = xsdFile;
    }

    //methods
}

您可能还希望这些文件可通过系统属性进行配置。可以使用注释通过 和 语法读取系统属性。@ValuePropertyPlaceholderConfigurer${}

为此,您可以在批注中使用不同的值:String@Value

@Value("${my.xml.file.property}")
@Value("${my.xsd.file.property}")

但系统属性中还需要以下属性:

my.xml.file.property=$MYDIR/myfile.xml
my.xsd.file.property=$MYDIR/myfile.xsd

答案 2

推荐