Spring @Autowired检测
Spring @Autowired detection
如果我有一个使用 spring bean 的 class,(将通过 @Autowired
连接)。
我注意到不仅要注入的 class 需要 @Component
,class 也需要使用它(注入)。为什么会这样? spring 不应该在 @Autowired
所在的地方注入吗?无需使用 @Component
作为注入器 class?
Spring 仅处理和管理那些 class 由构造型注释之一标记的 @Component
、@Controller
、@Repository
、[=13] =].
它不会扫描您的所有 classes(这会使启动非常慢)。
如果 class 不由 Spring 管理,则它不会处理该特定 class 内的任何注释。
在 Spring
中,一个与 beans
一起工作。 bean
是由 spring context
管理的 java 对象。当遇到包含 @Inject
的 bean
时,Spring
将在其 context
中搜索要注入的变量类型的 bean
。如果没有这样的 bean
被定义,Spring
将没有任何东西可以注入。此外,如果带有 @Inject
的 class 没有 bean
,那么 Spring
将不知道它,因此无法向其中注入任何东西。
要让 Spring
创建 class 的 bean
,有几种方法可用。通过注释,class 必须用 @Component
或更专业的注释 @Service
、@Repository
和 @Controller
进行注释。只有这样 Spring
才会为 class 创建一个 bean
,可以 @Inject
编辑到其他 beans
。
如果我有一个使用 spring bean 的 class,(将通过 @Autowired
连接)。
我注意到不仅要注入的 class 需要 @Component
,class 也需要使用它(注入)。为什么会这样? spring 不应该在 @Autowired
所在的地方注入吗?无需使用 @Component
作为注入器 class?
Spring 仅处理和管理那些 class 由构造型注释之一标记的 @Component
、@Controller
、@Repository
、[=13] =].
它不会扫描您的所有 classes(这会使启动非常慢)。
如果 class 不由 Spring 管理,则它不会处理该特定 class 内的任何注释。
在 Spring
中,一个与 beans
一起工作。 bean
是由 spring context
管理的 java 对象。当遇到包含 @Inject
的 bean
时,Spring
将在其 context
中搜索要注入的变量类型的 bean
。如果没有这样的 bean
被定义,Spring
将没有任何东西可以注入。此外,如果带有 @Inject
的 class 没有 bean
,那么 Spring
将不知道它,因此无法向其中注入任何东西。
要让 Spring
创建 class 的 bean
,有几种方法可用。通过注释,class 必须用 @Component
或更专业的注释 @Service
、@Repository
和 @Controller
进行注释。只有这样 Spring
才会为 class 创建一个 bean
,可以 @Inject
编辑到其他 beans
。