Это корректно, который я могу поместить context:annotation-config
в моей конфигурации XML и это автоматически введет класс компонента, не нуждаясь ни в каких аннотациях?
Таким образом вместо того, чтобы использовать эти типы аннотации:
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;
}
}
Я должен был бы просто записать это:
<beans ... >
<bean id="mailMan" class="MailMan">
<constructor-arg value="John Doe"/>
</bean>
<bean id="parcel" class="Parcel" />
<context:annotation-config />
</beans>
и затем мой класс MailMan выглядел бы намного более простым без потребности в аннотациях:
public class Mailman
{
private String name;
private Parcel Parcel;
public Mailman(String name)
{
this.name = name;
}
}
По умолчанию контекст Spring не обращает внимания на аннотации @Autowired
. Для их обработки в контексте должен быть зарегистрирован bean-компонент AutowiredAnnotationBeanPostProcessor
.
регистрирует один из них для вас (вместе с несколькими другими), поэтому он вам действительно нужен (если вы сами не зарегистрируете AutowiredAnnotationBeanPostProcessor
, что совершенно верно ).
Если вам не нравится использование @Autowired
в вашем коде, вы можете явно добавить свойства в XML, используя
, который просто перемещает беспорядок из одного места. к другому.
Если ваш контекст чрезвычайно прост, то вы можете использовать неявное автосоединение, как описано здесь . По сути, это сообщает Spring об автоматическом автоматическом подключении по имени или типу свойства. Это требовало очень небольшой настройки, но очень быстро выходит из-под контроля - это автоматический характер, что означает, что им сложно управлять, и дает очень небольшую гибкость.
@Autowired
в целом лучший вариант.
просто автоматически регистрирует все стандартные постпроцессоры компонентов, предоставляемые Spring, например PersistenceAnnotationBeanPostProcessor
, AutowiredAnnotationBeanPostProcessor
, CommonAnnotationBeanPostProcessor
и RequiredAnnotationBeanPostProcessor
, так что вам не нужно регистрировать их по отдельности в файле контекста Spring. Вы все равно должны предоставить аннотации @Autowired
для атрибутов / установщика, как раньше.
Нет.
@Autowired
Аннотации необходимы на классе вместе с
Часть xml config не нужна при использовании аннотаций.
Также из документа Обратите внимание, что
ищет аннотации только для бобов в том же контексте приложения, в котором они определены. Это означает, что если вы зададите WebApplicationContext для DispatcherServlet, он проверит наличие @Autowired бобов только в ваших контроллерах, но не в ваших сервисах.
Если вам не нужно использовать аннотации, тогда вам нужно указать конфигурацию xml.