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添加默认项。

posted @ 2025-02-18 21:57  eien  阅读(459)  评论(0)    收藏  举报