新手Spring问题。我有一个@Component类,正确地注释了,它为我提供了环境配置。
@Component
public class EnvConfig {
//...
}
因为它是@Component,所以会被自动注入获取。
但是这个类的调用者是一个普通的数据bean。普通数据bean有一个特殊的实用程序方法,需要访问这个类。public class EmployeeBean {
@Autowired
EnvConfig envConfig;
//...
public void getSpecialInfo()
{
envConfig.method1();
envConfig.method2();
}
}
envConfig是NULL当我调试到这个方法。
所以Autowired对象的调用者也需要是一个@Component, @Service或@Repository?
或多或少,是的。Spring显然可以自动装配它所管理的对象(换句话说,"Spring Beans")——否则它怎么能做到呢?所以,如果你自己创建一个对象(new ...
),那么它就不是一个"spring bean",只是一个随机的对象,spring无法控制它——它也不能自动地在那里装配一些东西。
这样做的一种方法是使它们成为@Component
等,并让它们通过Spring的组件扫描被发现。
创建Spring bean的其他方法将是JavaConfig(通过@Bean
), XML配置(通过<bean .../>
)和其他(例如通过PreProcessors,但这开始变得深奥)。
当然,您也可以使用一些对Spring应用程序上下文的静态访问来让您自己的对象访问Spring bean——但这并不是一个真正好的方法。