上下文:annotation-config是@AutoWired的替代品吗?

我可以在我的XML配置中放置context:annotation-config config并且它会自动注入bean类而不需要任何注释是否正确?

所以不要使用这些注释类型:

 public class Mailman { private String name; @Autowired private Parcel Parcel; public Mailman(String name) { this.name = name; } @Autowired public void setParcel(Parcel Parcel) { this.Parcel = Parcel; } @Autowired public void directionsToParcel(Parcel Parcel) { this.Parcel = Parcel; } } 

我只需要写这个:

        

然后我的MailMan类看起来会更简单,而不需要注释:

 public class Mailman { private String name; private Parcel Parcel; public Mailman(String name) { this.name = name; } } 

默认情况下,Spring上下文不会关注@Autowired注释。 为了处理它们,上下文需要在上下文中注册AutowiredAnnotationBeanPostProcessor bean。

为您注册其中一个(以及其他一些),因此您确实需要它(除非您自己注册AutowiredAnnotationBeanPostProcessor ,这是完全有效的)。

如果您不喜欢在代码中使用@Autowired ,那么您可以使用在XML中显式地注入属性, @Autowired会将混乱从一个地方移动到另一个地方。

如果您的上下文非常简单,那么您可以使用隐式自动assembly,如此处所述。 从本质上讲,这告诉Spring通过属性名称或类型自动自动assembly。 这需要非常少的配置,但它很快失控 – 它的自动性意味着它很难控制,并且给你很小的灵活性。

@Autowired确实是最好的选择。

只是自动注册Spring提供的所有标准bean后处理器,如PersistenceAnnotationBeanPostProcessorAutowiredAnnotationBeanPostProcessorCommonAnnotationBeanPostProcessorRequiredAnnotationBeanPostProcessor ,这样就不必在spring上下文文件中单独注册它们。 您仍然必须像之前一样在属性/设置器上提供@Autowired注释。

没有。

@Autowired类和一起需要

使用注释时不需要xml配置部分。

同样来自doc注意仅查找在其定义的同一应用程序上下文中的bean上的注释。这意味着,如果您为DispatcherServlet放入WebApplicationContext,它只会检查@Autowired控制器中的bean,而不是您的服务。

如果您不需要使用注释,则需要指定xml配置。