spring报错:org.springframework.beans.factory.BeanCreationException和nested exception is java.lang.IllegalArgumentException
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'appConfig': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'admin.account' in value "${admin.account}"
例子&原因
这个问题出现在maven项目分为多个模块的时候,比如admin和web模块都继承于common模块,common模块中有以下代码读取配置文件,为admin端读取账号密码:
@Configuration
public class AppConfig {
@Value("${project.folder:D:/Documents/project_folder/}")
private String projectFolder;
@Value("${admin.account}")
private String adminAccount;
@Value("${admin.password}")
private String adminPassword;
}
@Value("${admin.account}") 读取yaml配置文件中的配置。但是web模块不需要这个配置,在web模块中自然就没有admin.account选项,因此在运行web模块的时候bean创建异常,原因是无法解析${admin.account}。
解决方法
@Configuration
public class AppConfig {
@Value("${project.folder:D:/Documents/project_folder/}")
private String projectFolder;
//添加默认项,否则web端不需要admin.account会启动报错
@Value("${admin.account:admin}")
private String adminAccount;
@Value("${admin.password:adminPassword}")
private String adminPassword;
}
为admin.password和admin.account添加默认项。

浙公网安备 33010602011771号