如果我有一个使用spring的类,(将通过@Autowired连接)。我注意到,不仅要注入的类需要@Component,还需要使用它的类(注入)。为什么是那样的?spring不应该在@Autowired所在的地方注入吗?而不用使用@Component作为注射器类?
发布于 2016-02-25 13:53:19
Spring只处理和管理由构造型注释( @Component、@Controller、@Repository、@Service )之一标记的类。
它不会扫描所有的类(这会使启动非常慢)。
如果这个类不是由Spring管理的,它就不会处理这个特定类中的任何注释。
发布于 2016-02-25 13:55:45
在Spring中,一个与beans一起工作。bean是由spring context管理的java对象。当遇到包含bean的@Inject时,Spring将为要注入的变量类型的bean搜索其context。如果没有定义这样的bean,Spring就没有什么可注入的了。另外,如果带有@Inject的类没有bean,那么Spring将不知道它,因此不能向它注入任何东西。
要让Spring创建类的bean,有几种方法可用。通过注释,必须用@Component或更专门的注释@Service、@Repository和@Controller对类进行注释。只有到那时,Spring才会为类创建一个bean,这个类可以被@Inject编辑成其他beans。
https://stackoverflow.com/questions/35629107
复制相似问题