我是Spring的新手并且有些问题。
一个是..在我的Java类中,我有一个绝对目录路径的声明,其中保存了一些图像。现在,如果我想将我的项目发送给同事或朋友,他需要更改我的Java代码中的 ImagePath 。所以我想使用一种通用的技术,有一个文件,你可以只编辑路径,项目就像它应该的那样工作。
我听说过你设置 application.yml 和配置类的方法,但实际上我不知道在这些文件中要写什么
答案 0 :(得分:0)
您的问题有两种选择:
一种方法是使用src/main/resources
之类的相对路径并将图像放在那里。
另一种选择是在application.properties
文件中设置文件路径,如:
my.images.directory.path =路径
现在您可以使用@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;
...
}