我在使用Spring通过java读取yaml时遇到了一个问题。让我先展示代码
@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "countries")
public class UserLimitReader {
private HashMap<String, Integer> orders;
private HashMap<String, Integer> requests;
public HashMap<String, Integer> getOrders() {
return orders;
}
public void setOrderRedeemableLimit(HashMap<String, Integer> orders)
{
this.orders= orders;
}
public HashMap<String, Integer> getRequests() {
return requests;
}
public void setMonthlyRedeemableLimit(HashMap<String, Integer> requests) {
this.requests= requests;
}
}
我的yaml文件:
cassandra:
hosts: localhost:9142, 127.0.0.1:9142
keyspace: test
countries:
orders:
JPY: 1000
USD: 1000
requests:
JPY: 100000
USD: 100000
spring上下文xml还具有以下功能:
<bean id="yamlProperties"
class="org.springframework.beans.factory.config.YamlPropertiesFactoryBean">
<property name="resources">
<value>classpath:config/application.yaml</value>
</property>
</bean>
<context:property-placeholder
properties-ref="yamlProperties" />
在这里面,它说,所有的东西都是作为一个字符串而不是一个地图来阅读的。是否有其他类支持读取Yaml文件的方式:Spring boot-inject map from application.yml
还是我对YamlPropertiesFactoryBean的理解有误?
compile 'org.springframework:spring-core:4.2.+'
compile 'org.springframework:spring-beans:4.2.+'
compile 'org.springframework:spring-context:4.2.+'
compile 'org.springframework.boot:spring-boot:1.3.1.RELEASE'
compile 'org.springframework.boot:spring-boot-configuration-processor:1.3.1.RELEASE'
这些是Gradle中的依赖项。您可能想知道为什么我有spring-core和spring-boot,本质上,我不想要spring-boot,但是没有spring-boot,我就不能添加@enableConfigurationProperties和@configurationProperties,老实说,我不知道如果没有它们,我是否可以将yaml内容读入映射。因此添加了这两个依赖项,但如果有方法可以删除它们,我将非常乐意删除这两个依赖项。
热烈的问候,帕万
对于不同的泛型类型,我遇到了同样的问题,我通过初始化map成员并删除setter方法来解决这个问题,例如:
@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "countries")
public class UserLimitReader{
private Map<String, Integer> orders = new HashMap<>();
private Map<String, Integer> requests = new HashMap<>();
public Map<String, Integer> getOrders() {
return orders;
}
...
}
请注意,我使用了Java7Diamond运算符,并将成员类型更改为Map而不是HashMap。
重要提示:在我的代码中,我使用了Spring的配置类而不是XML,并将EnableConfigurationProperties
移到了配置类。在您的情况下,应该是这样的:
@Configuration
@EnableConfigurationProperties(value = {UserLimitReader.class})
public class SpringConfiguration {
...
}
@ConfigurationProperties(prefix = "countries", locations: "classpath:config/application.yaml")
public class UserLimitReader {
...
}
问题内容: 我在使用spring通过java阅读yaml时遇到问题。让我先显示代码 我的yaml文件: Spring上下文xml也具有以下内容: 现在,我的期望是,在我的春季测试应用程序运行期间(上下文xml来自我的测试资源,yaml也处于我的测试中),这些orders和requests值已设置,但它们为空。另外,请注意,除了使用@Value($ {…})注入的值之外,yaml中还有其他值,注入它
因此,我得到了一个庞大的JSON文件,我需要从中提取数据。JSON格式如下所示: 为了阅读它,我试图创建一个类来映射键和对象。类似这样的东西,类似于这个问题: 但是我被数组卡住了,它包含了更多的对象,而不仅仅是简单的基本数据类型。 JSON文件很大,并且在其中到处都有类似类型的项。我对此相当陌生,可能会犯一些错误。任何朝着正确方向的帮助都是感激的。谢了!
问题内容: 我有一个数据结构,我希望能够在关闭程序之前写入文件,然后在下次应用程序启动时从文件中读取数据以重新填充该结构。 我的结构是。对象很简单;对于成员变量,它具有一个String和两个布尔类型的小型本机数组。这是一个真正简单的应用程序,我希望一次不会超过10-15 对。 我一直在尝试(不成功)对象输入/输出流。我需要使对象类可序列化吗? 您能给我一些最好的建议吗?我只需要向正确的方向推进即可
我不想使用foreach和loop。我想使用Java8中的流在列表中的映射中查找值 问题是,在过滤器我不能搜索键/值对。 我想得到布尔=true的所有元素 我做错了什么吗?
问题内容: 为了验证我收到的数据,我需要确保该长度不会超过数据库列的长度。现在,所有长度信息都存储在Hibernate映射文件中,是否可以通过编程方式访问此信息? 问题答案: 您可以实现,但这并不容易。您可能想要在启动时执行以下操作,并存储值的静态缓存。有很多特殊情况要处理(继承等),但它应适用于简单的单列映射。我可能遗漏了一些instanceof和null检查。
问题内容: 似乎mmap接口仅支持readline()。如果我尝试遍历对象,则会得到字符而不是完整的行。 逐行读取mmap文件的“ pythonic”方法是什么? 问题答案: 遍历an行的最简洁方法是 请注意,在Python 3的前哨参数必须是类型的,而在Python 2它需要一个(即,而不是)。