上下文: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后处理器,如PersistenceAnnotationBeanPostProcessor
, AutowiredAnnotationBeanPostProcessor
, CommonAnnotationBeanPostProcessor
和RequiredAnnotationBeanPostProcessor
,这样就不必在spring上下文文件中单独注册它们。 您仍然必须像之前一样在属性/设置器上提供@Autowired
注释。
没有。
@Autowired
类和
一起需要
使用注释时不需要xml配置部分。
同样来自doc注意
仅查找在其定义的同一应用程序上下文中的bean上的注释。这意味着,如果您为DispatcherServlet放入WebApplicationContext,它只会检查@Autowired控制器中的bean,而不是您的服务。
如果您不需要使用注释,则需要指定xml配置。
- Springvalidation器:同时具有注释和validation器实现
- 弹簧自动assembly和原型范围
- @OneToOne(可选= false)和@JoinColumn(nullable = false)一起使用
- 如何定义流结果注释?
- Spring @Transactional注释被忽略了
- Spring @Autowired messageSource在Controller中工作但在其他类中没有?
- 如何在jersey WriterInterceptor实现中获取@interface参数
- 如何实现`Jackson AnnotationIntrospector`?
- 如何使用hibernate JPA注释映射嵌套集合Map <Key,List >?