说我在Spring启动应用程序中有以下类:
@Configuration
public class Environment {
@Autowired
org.springframework.core.env.Environment environment;
}
运行时,我得到:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field environment in com.example.Environment required a bean of type 'org.springframework.core.env.Environment' that could not be found.
Action:
Consider defining a bean of type 'org.springframework.core.env.Environment' in your configuration.
Disconnected from the target VM, address: '127.0.0.1:57780', transport: 'socket'
解决此问题的解决方法是将我的班级从public class Environment
重命名为public class Environments
但我不想这样做。如何保留我的班级名称,让Spring知道我想要做什么?
答案 0 :(得分:5)
您应该为您的配置命名:
@Configuration(value = "myEnviroment")
public class Environment {}
来自@Configuration
文档,关于value
:
显式指定关联的Spring bean定义的名称 使用此Configuration类。 如果未指定(常见情况), 将自动生成一个bean名称。 仅当通过以下方式获取Configuration类时,自定义名称才适用 组件扫描或直接提供给AnnotationConfigApplicationContext。
修改:
使用@Qualifier
注释在您的应用程序中自动装配此bean时使用相同的名称,如下所示:
@Autowired @Qualifier("myEnvironment")
private Environment environment;
答案 1 :(得分:0)
您可以为您的类指定bean名称,并为新bean自动装配,最后您将自动装配到bean的类
@Autowire("newname")