到嵌套java对象的yml绑定中出现异常
尝试映射嵌套java对象中的yml时遇到以下异常,是否有人也遇到异常,请建议: org.springframework.beans.factory.BeanCreationException:错误 正在创建名为“alias”的bean:无法将属性绑定到alias (前缀=别名,ignoreInvalidFields=假,ignoreUnknownFields=真, ignoreNestedProperties=false);嵌套异常是 java.lang.NullPointerException 位于org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:352) 位于org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:303) 位于org.springframework.cloud.context.properties.ConfigurationPropertiesRebinder.rebind(ConfigurationPropertiesRebinder.java:100) application-alias.yml到嵌套java对象的yml绑定中出现异常,java,spring,spring-boot,configurationproperties,Java,Spring,Spring Boot,Configurationproperties,尝试映射嵌套java对象中的yml时遇到以下异常,是否有人也遇到异常,请建议: org.springframework.beans.factory.BeanCreationException:错误 正在创建名为“alias”的bean:无法将属性绑定到alias (前缀=别名,ignoreInvalidFields=假,ignoreUnknownFields=真, ignoreNestedProperties=false);嵌套异常是 java.lang.NullPointerException
alias:
name:
-
x: 123
-
x: 321
Alias.java
@Configuration
@ConfigurationProperties(prefix = "alias")
public class Alias {
private List<PropA> name = null;
public Alias() {}
public List<PropA> getName() {
return name;
}
public void setName(List<PropA> name) {
this.name = name;
}
}
AliasResolverImpl.java
@Component
@EnableConfigurationProperties
public class AliasResolverImplBack implements MapperInterface {
@Autowired
Alias aliases;
@Override
public List<Entity> resolve(List<Entity> request) throws AliasException {
System.out.println("In impl : "+aliases.toString());
return null;
}
}
ApplicationConfig.java
@SpringBootApplication(scanBasePackages = "com.ie.naukri.services.mnj.lookupService")
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })
@EnableConfigurationProperties
public class ApplicationConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(final String[] args) {
SpringApplication.run(ApplicationConfig.class, args);
final ApplicationContext applicationContext = SpringApplication.run(ApplicationConfig.class, args);
applicationContext.getBean(AliasResolverImpl.class).resolve(null);
}
}
PropA.java
@Configuration
@ConfigurationProperties(prefix="alias.name")
public class PropA {
private int x=0;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
@Override
public String toString() {
return "PropA [x=" + x + "]";
}
}
别名:
姓名:
-
x:123
-
x:321
Alias.java
@配置
@配置属性(前缀=“别名”)
公共类别名{
私有列表名称=null;
公共别名(){}
公共列表getName(){
返回名称;
}
公共无效集合名(列表名){
this.name=名称;
}
}
AliasResolverImpl.java
@组成部分
@EnableConfigurationProperties
公共类AliasResolverImplBack实现MapperInterface{
@自动连线
别名;
@凌驾
公共列表解析(列表请求)引发别名异常{
System.out.println(“In impl:+alias.toString());
返回null;
}
}
ApplicationConfig.java
@SpringBootApplication(scanBasePackages=“com.ie.naukri.services.mnj.lookupService”)
@EnableAutoConfiguration(排除={DataSourceAutoConfiguration.class})
@EnableConfigurationProperties
公共类应用程序配置{
@豆子
公共RestTemplate RestTemplate(){
返回新的RestTemplate();
}
公共静态void main(最终字符串[]args){
run(ApplicationConfig.class,args);
final ApplicationContext ApplicationContext=SpringApplication.run(ApplicationConfig.class,args);
applicationContext.getBean(AliasResolverImpl.class).resolve(null);
}
}
PropA.java
@配置
@ConfigurationProperties(前缀=“alias.name”)
公共类宣传品{
私有整数x=0;
公共int getX(){
返回x;
}
公共无效集合x(整数x){
这个.x=x;
}
@凌驾
公共字符串toString(){
返回“PropA[x=“+x+”]”;
}
}
这应该行得通
@Configuration
@ConfigurationProperties(prefix = "alias")
public class Alias {
private List<PropA> name = null;
public Alias() {}
public List<PropA> getName() {
return name;
}
public void setName(List<PropA> name) {
this.name = name;
}
}
你的PropA课程应该是
public class PropA {
private int x=0;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
@Override
public String toString() {
return "PropA [x=" + x + "]";
}
}
@Configuration
@ConfigurationProperties(prefix="alias.name")
public class PropA {
private int x=0;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
@Override
public String toString() {
return "PropA [x=" + x + "]";
}
}