是否可以使用Spring @Value将属性文件中的值映射到HashMap.
目前我有类似的东西,映射一个值不是问题.但我需要在HashMap过期中映射自定义值.这样的事情可能吗?
@Service
@PropertySource(value = "classpath:my_service.properties")
public class SomeServiceImpl implements SomeService {
@Value("#{conf['service.cache']}")
private final boolean useCache = false;
@Value("#{conf['service.expiration.[<custom name>]']}")
private final HashMap<String, String> expirations = new HashMap<String, String>();
Run Code Online (Sandbox Code Playgroud)
属性文件:'my_service.properties'
service.cache=true
service.expiration.name1=100
service.expiration.name2=20
Run Code Online (Sandbox Code Playgroud)
像这个键映射是否可行:值集
name1 = 100
name2 = 20
我有一个当前使用*.properties文件的spring应用程序,我希望使用YAML文件.
我发现类YamlPropertiesFactoryBean似乎能够做我需要的.
我的问题是我不确定如何在我的Spring应用程序(使用基于注释的配置)中使用此类.看来我应该使用 setBeanFactory方法在PropertySourcesPlaceholderConfigurer中配置它.
以前我使用@PropertySource加载属性文件,如下所示:
@Configuration
@PropertySource("classpath:/default.properties")
public class PropertiesConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
Run Code Online (Sandbox Code Playgroud)
如何在PropertySourcesPlaceholderConfigurer中启用YamlPropertiesFactoryBean以便我可以直接加载YAML文件?还是有另一种方法吗?
谢谢.
我的应用程序使用基于注释的配置,我使用的是Spring Framework 4.1.4.我找到了一些信息,但它始终指向Spring Boot,就像这一样.
关于最终属性的属性文件中Spring注入的简单问题.
我有一个属性文件,我想存储一个文件路径.通常当我使用属性文件时,我使用类似这样的东西设置类属性:
private @Value("#{someProps['prop.field']}") String someAttrib ;
Run Code Online (Sandbox Code Playgroud)
然后在我的spring.xml我会有类似的东西:
<util:properties id="someProps"
location="classpath:/META-INF/properties/somePropFile.properties" />
Run Code Online (Sandbox Code Playgroud)
这很好用,很简单,使代码更好,更整洁.但我不确定在尝试将属性值注入最终类属性时使用的最佳模式是什么?
显然是这样的:
private static final @Value("#{fileProps['dict.english']}") String DICT_PATH;
Run Code Online (Sandbox Code Playgroud)
不管用.还有另外一种方法吗?
干杯!
我有Maven POM文件的一些配置,在插件部分,我有maven tomcat插件,其中有一些配置如下:
<configuration>
<url>http://localhost:8080/manager/html</url>
<server>tomcat</server>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我想将url设置导出到某个属性文件,例如使用该键的tomcat.properties:
url=http://localhost:8080/manager/html
Run Code Online (Sandbox Code Playgroud)
如何在POM文件中读取此密钥?
我有属性文件中的int,float,boolean和string.所有东西都加载了属性.目前,我正在解析值,因为我知道特定键的预期值.
Boolean.parseBoolean("false");
Integer.parseInt("3")
Run Code Online (Sandbox Code Playgroud)
什么是设置这些常量值的更好方法,如果我不知道键的原始值数据类型是什么.
public class Messages {
Properties appProperties = null;
FileInputStream file = null;
public void initialization() throws Exception {
appProperties = new Properties();
try {
loadPropertiesFile();
} catch (Exception e) {
throw new Exception(e.getMessage(), e);
}
}
public void loadPropertiesFile() throws IOException {
String path = "./cfg/message.properties";
file = new FileInputStream(path);
appProperties.load(file);
file.close();
}
}
Run Code Online (Sandbox Code Playgroud)
属性文件.messassge.properties
SSO_URL = https://example.com/connect/token
SSO_API_USERNAME = test
SSO_API_PASSWORD = Uo88YmMpKUp
SSO_API_SCOPE = intraday_api
SSO_IS_PROXY_ENABLED = false
SSO_MAX_RETRY_COUNT = 3
SSO_FLOAT_VALUE = 3.0 …Run Code Online (Sandbox Code Playgroud) 我正在使用java.util.Properties的store(Writer,String)方法来存储属性.在生成的文本文件中,属性以偶然的顺序存储.
这就是我正在做的事情:
Properties properties = createProperties();
properties.store(new FileWriter(file), null);
Run Code Online (Sandbox Code Playgroud)
如何确保按字母顺序或按属性添加顺序写出属性?
我希望解决方案比"手动创建属性文件"更简单.
假设我有一个file.properties,其内容是:
app.name=Test App
app.version=1.2
...
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得app.name的值?
我有一个JavaEE项目,我在其中使用消息属性文件.这些文件的编码设置为UTF-8.在文件我用的是德国的变音似ä,ö,ü.问题是,有时这些字符会被unicode替换\uFFFD\uFFFD,但不会替换为每个字符.现在,我有一个案例,其中ä和ü都被替换\uFFFD\uFFFD,但不是每个发生ä和ü.
Git diff给我看了这样的事情:
mail.adresses=E-Mail hinzufügen:
-mail.adresses.multiple=E-Mails durch Kommata getrennt hinzufügen.
+mail.adresses.multiple=E-Mails durch Kommata getrennt hinzuf\uFFFD\uFFFDgen.
mail.title=Einladungs-E-Mail
box.preview=Vorschau
box.share.text=Sie können jetzt die ausgewählten Bilder mit Ihren Freunden teilen.
@@ -6880,7 +6880,7 @@ browser.cancel=Abbrechen
browser.selectImage=übernehmen
browser.starImage=merken
browser.removeImage=Löschen
-browser.searchForSimilarImages=ähnliche
+browser.searchForSimilarImages=\uFFFD\uFFFDhnliche
browser.clear_drop_box=löschen
Run Code Online (Sandbox Code Playgroud)
还有一些线路发生了变化,我没有碰过.我不明白为什么我会这样做.可能是上述问题的原因是什么?
我的系统:
Antergos/Arch Linux
系统编码UTF-8
Python 3.5.0 (default, Sep 20 2015, 11:28:25)
[GCC 5.2.0] on linux
Type "help", "copyright", "credits" or "license" for more …Run Code Online (Sandbox Code Playgroud)我有一个spring启动应用程序,我想同时使用yml文件作为我的应用程序属性,也希望使用普通应用程序 - $ {profile} .properties文件集来配置我的应用程序.
所以我的问题是可以做到这一点,如果是这样,你如何配置spring boot来查找yml文件和属性,并将它们合并到每个环境中的一个集合中?
至于为什么我想要/需要同时使用两者,这是因为我喜欢yml文件的灵活性和易用性,但内部组件(用于加密)需要使用属性文件集.
我确实看到了这一点,YAML文件无法通过@PropertySource注释加载
但没有说明两者是否可以一起使用.
请提供有关如何使其正常工作的详细配置(XML或Java配置).
TIA,
斯科特
为了慢慢占用每个人的内存,Java将这些文件扩展为".properties",这些文件基本上是一个充满键值对的ASCII文本文件.该框架有一些非常简单的方法将该文件吸入(基本上)一个花哨的hashmap.
两个巨大的优势(我认为)是手工编辑和阅读/写作的极易.
.NET是否有相同的烘焙?当然,我可以用XML文件做同样的事情,但如果你知道我的意思,我宁可不要手工输入所有尖括号.此外,将所有数据吸入内存中的数据结构的方法也很好.
(侧栏:我有点不敢相信这里已经没有问过了,但我找不到这样的问题.)
编辑:
为了回答一些评论暗示的问题,我不是在寻找一种在.NET下专门阅读java .properties文件的方法,我正在寻找.NET领域中的功能等价物.(而且我希望它不会基于XML,显然已经忘记了这是我们正在讨论的.NET.)
并且,虽然配置文件很接近,但我需要存储一些任意字符串,而不是应用程序配置信息,所以配置文件的焦点和设计似乎是偏离基础的.
properties-file ×10
java ×9
spring ×3
yaml ×2
.net ×1
constants ×1
eclipse ×1
maven-2 ×1
pom.xml ×1
powershell ×1
properties ×1
spring-boot ×1
spring-el ×1
tomcat ×1
utf-8 ×1