Подтвердить что ты не робот

Рекомендации по использованию Spring 3 аннотаций

Я ищу некоторые рекомендации при использовании Spring 3 аннотаций.

В настоящее время я перехожу к Spring 3 и из того, что я прочитал до сих пор, я вижу много акцентов на использование аннотаций и переход от конфигурации XML.

На самом деле рекомендуется использовать сочетание обоих стилей с аннотациями, которые охватывают вещи, которые не будут меняться часто или от одного прогона к другому (например, @Controller останется таким же, как и в течение срока службы приложения) в то время как вещи, которые изменяются и должны быть настроены, переходят в XML (например, адрес SMTP-почты, конечные точки для веб-сервисов, к которым ваше приложение говорит и т.д.).

Мой вопрос заключается в том, что должно идти в аннотации и в какой степени?

В какой момент аннотации делают вещи сложнее, а не проще? Является ли технология (Spring 3) полностью принятой, чтобы иметь возможность делать такие заявления или требуется больше времени для людей, чтобы получить опыт работы с ней, а затем подумать над этой проблемой?

4b9b3361

Ответ 1

Всегда сложно получить реальную расширенную информацию.

Простой учебник с "взглянем на мой блог, я скопировал учебник по приветственным слоям из веб-сайта Spring Source... Теперь вы можете поместить фантастические аннотации повсюду, это решение всех наших проблем, включая рак и голод". не очень полезно.

Если вы помните, что у правильного ядра Spring было несколько целей, среди них:

  • быть неинтрузивным
  • изменить любой реализации/конфигурации bean в любое время
  • предоставить централизованный и контролируемый место для размещения вашей конфигурации

Ошибка анотации для всех потребностей:

  • Они вводят связь с spring (вы можете использовать только стандартную анотацию но как только у вас есть хотя бы один spring anotation это уже не правда)
  • Вам необходимо изменить исходный код и перекомпилировать для изменения bean реализации или конфигурации
  • Аннотации повсюду в вашем код. Это может быть трудно найти что bean будет действительно использоваться только чтение кода или конфигурации XML файл.

Фактически мы сместили наш фокус:

  • Мы поняли, что почти никогда обеспечивают несколько реализаций наши услуги.
  • Мы поняли, что зависимость от API не так уж плох.
  • Мы поняли, что мы используем Spring не только для реальной инъекции зависимостей больше, но в основном для увеличения производительность и сокращение Java-кода многословие.

Таким образом, я бы использовал анотации, когда делал это. Когда чище удалить код шаблона, многословие. Я бы позаботился о том, чтобы использовать файл конфигурации XML для того, что вы хотите настроить, даже если он предназначен только для обеспечения реализации службы в модульных тестах.

Ответ 2

Я использую @Value для свойств, которые настроены во внешнем файле свойств через PropertyPlaceholderConfigurer, как отметил kunal.

Нет строгой строки для использования xml, но я использую xml:

  • когда bean не относится к классу I
  • когда объект связан с инфраструктурой или конфигурацией, а не с бизнес-логикой.
  • когда класс имеет некоторые примитивные свойства, которые я хотел бы настраивать, но не обязательно через внешние конфигурации.

В ответ на ваш комментарий: spring очень широко принят, но "хорошие" и "плохие" очень субъективны. Даже мои строки не являются универсальными истинами. XML, аннотации и программная конфигурация существуют для определенной цели, и у каждого разработчика/компании есть свои предпочтения.

Как я уже сказал - нет строгой линии и универсальной хорошей практики для аннотаций.

Ответ 3

Аннотации - это, конечно, способ, которым будет продолжаться "новое" программирование в java. Я использую аннотации для различных применений... например @Scope для области bean, @Required для обеспечения необходимой зависимости, @Aspect для настройки советов, @Autowired для встраивания конструктора с помощью аннотаций. Поскольку spring 2.5, поддержка аннотации была хорошей. См. Здесь spring учебник, в котором рассмотрена проблема с аннотацией здесь.

Ответ 4

Я думаю, что два случая, что использование аннотаций может вызвать некоторые проблемы. Во-первых, если вы хотите написать сложные именованные запросы (JPA) в своих сущностях. Я видел несколько примеров кода объекта и спрашивал себя, действительно ли код является Java-кодом или нет. Множество метаданных в программном коде уменьшает читаемость, которая убивает принципы чистого кода.

Вторая проблема - переносимость версий JVM. Аннотация - это функция 1.5+. Если ваше программное обеспечение должно поддерживать более ранние версии JVM, вы можете не использовать их.

В любом случае, вы можете наслаждаться аннотациями каждый раз без каких-либо сомнений и не тратить свое время, не меняя вкладки IDE, чтобы проверять XML файлы, если свойство все еще там или нет, или введены правильно и т.д.

Для очень маленьких проектов вы все еще можете использовать XML-версию, если в spring не указано слишком много материалов. Но если вы находитесь в огромном проекте, все может быть очень неприятным, если у вас есть 10 xml-конфигураций.

Ответ 5

Это, возможно, не поможет вам, но на работе они не хотят использовать autowiring, потому что для этого требуется сканирование классов (но это может быть определено в пакете, я думаю). Таким образом, время запуска приложения увеличивается в зависимости от размера проекта.