可以在另一个文件中更改Path而不是java类

时间:2017-09-29 06:34:30

标签: java spring spring-boot

我是Spring的新手并且有些问题。

一个是..在我的Java类中,我有一个绝对目录路径的声明,其中保存了一些图像。现在,如果我想将我的项目发送给同事或朋友,他需要更改我的Java代码中的 ImagePath 。所以我想使用一种通用的技术,有一个文件,你可以只编辑路径,项目就像它应该的那样工作。

我听说过你设置 application.yml 配置类的方法,但实际上我不知道在这些文件中要写什么

3 个答案:

答案 0 :(得分:0)

您的问题有两种选择:

  1. 一种方法是使用src/main/resources之类的相对路径并将图像放在那里。

  2. 另一种选择是在application.properties文件中设置文件路径,如:

    my.images.directory.path =路径

  3. 现在您可以使用@Value在您的类中使用此属性: 例如:

    @Value( "${my.images.directory.path}" )
    private String imagePath;
    

    您也可以在application.yml文件中设置相同的内容。

    此外,还有其他方法可以在属性文件中设置属性并使用它,您可以通过here引用它。

    希望有所帮助。

答案 1 :(得分:0)

Spring在外部化配置方面有很多选择。在您的情况下,最好的选择是向application.yml文件添加属性。确保将此文件添加到应用程序的类路径中。或者,您可以使用spring.config.location命令行参数指定此文件的位置。

这是一个简单的application.yml文件,

images:
    path:/usr/images

然后,您可以在应用程序中创建配置bean以注入此属性。

@Component
public class MyConfig {

    @Value("${images.path}")
    public String name;
}

现在用MyConfig.name替换应用程序中的硬编码路径。

有关外部化配置的完整选项列表,请查看此link

答案 2 :(得分:0)

您也可以使用@PropertySource。在/src/main/resources中添加一个文件,假设config.properties包含属性。

  

config.properties文件

images.dir=/path/to/images/dir

在java类中,假设@Controller添加@PropertySource,如测试代码所示,您将能够访问该属性。

您只需要更新文件

@PropertySource("classpath:config.properties")
@Controller
public class TestController {
    @Value("${images.dir}")
    private String defaultDb;

    ... 

}