我试图将我在application.properties文件中创建的自定义配置属性列表注入Controller。我得到@Value("${custom.resource}"
我也尝试过注入,如下所示:import lombok.Data;
@Configuration
@ConfigurationProperties(prefix = "custom")
public class ConfigProperties {
@Data
public static class Resource {
private String description;
private String category;
private String URL;
private Boolean PDF;
}
}
这是我的ConfigurationProperty类: import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration;
custom.resource.description[6]=Description
custom.resource.category[6]=the-category
custom.resource.url[6]=somelink.com
custom.resource.pdf[6]=false
custom.resource.description[7]=Description
custom.resource.category[7]=the-category
custom.resource.url[7]=somelink.com
custom.resource.pdf[7]=false
我的getter和setter方法由Lombok生成
这是我如何布置我的属性:
head(TrainWithAppevents_rel4)
event_id |device_id |gender |age |group| phone_brand |device_model| numbrand nummodel | app_id
6 6 1476664663289716480 M 19 M22- åŽä¸º Mate 7 29 919 4348659952760821248
我不确定我所做的事情是否是不可能的,如果还有其他方式我应该去做什么或什么。任何指导都会很棒
答案 0 :(得分:0)
请按以下方式更正您的课程:
@Getter
@Component
@ConfigurationProperties(prefix = "custom")
public class ConfigProperties {
private final Resource resource = new Resource();
@Getter
@Setter
public static class Resource {
private List<String> description = new ArrayList<>();
private List<String> category = new ArrayList<>();
private List<String> URL = new ArrayList<>();
private List<Boolean> PDF = new ArrayList<>();
}
}
答案 1 :(得分:0)
为了解决这个问题,我需要在ConfigProperty类中添加一个ResourceList,并使用spring EL在@Value
中按bean名称调用列表
import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration;
import lombok.Data;
@Configuration
@ConfigurationProperties("custom")
@Data
public class ConfigProperties {
private List<Resource> resourceList;
@Data
public static class Resource {
private String description;
private String category;
public String url;
public Boolean pdf;
}
}
@Value("#{configProperties.resourceList}")
包含在我的Controller类
答案 2 :(得分:0)
我正在使用许多前缀来分隔mi配置属性,如Guide to @ConfigurationProperties所述(恕我直言,这很优雅)。
遵循here中描述的官方文档。您需要将属性文件更改为:
custom.resource[6].description=Description
custom.resource[6].category=the-category
custom.resource[6].url=somelink.com
custom.resource[6].pdf=false
custom.resource[7].description=Description
custom.resource[7].category=the-category
custom.resource[7].url=somelink.com
custom.resource[7].pdf=false
还需要创建一个POJO来管理信息,如下所示:
public class Resource {
private String description;
private String category;
private String url
private boolean pdf
/**
* Setters and getters
*/
}
最后添加该类以正确管理Configuration属性:
@Configuration
@PropertySource("classpath:config.properties")
public class ConfigProperties {
private final List<Resource> resources = new ArrayList<>();
@Bean
@ConfigurationProperties(prefix = "custom.resource")
public List<Resource> resources() {
return this.resources;
}
}
使用示例:
@Autowired
private ConfigProperties config;
@Override
public void run(String... args) throws Exception {
for (Resource resource : config.resources()) {
// More lines of code
}
}