При переходе на Spring 2.5.x я обнаружил, что он добавляет больше аннотаций к стереотипам (поверх @Repository от 2.0): @Component, @Service и @Controller. Как вы их используете? Вы полагаетесь на неявную поддержку Spring или вы определяете собственные функции/аспекты/функции пользовательского стереотипа? Или это преимущественно для маркировки beans (время компиляции, концептуальное и т.д.)?
Как вы используете аннотации стереотипов в Spring 2.5.x?
Ответ 1
Следующие аннотации стереотипов в 2.5 могут использоваться в приложении Spring MVC в качестве альтернативы подключению beans в XML:
-
@Repository - для DAO beans - позволяет вы бросаете DataAccessException, когда источник данных недоступен.
-
@Service - для бизнеса beans - довольно просты beans, которые имеют некоторые настроены политики хранения по умолчанию.
-
@Controller - для сервлетов - позволяет настроить запрос страницы сопоставления и т.д.
Кроме того, была введена общая четвертая аннотация: @Component. Все аннотации MVC являются специализациями этого, и вы даже можете использовать @Component самостоятельно, хотя, делая это в Spring MVC, вы не будете использовать какие-либо будущие оптимизации/функциональные возможности, добавленные к аннотациям более высокого уровня, Вы также можете расширить @Component, чтобы создать свои собственные стереотипы.
Вот краткий пример аннотаций MVC в действии... Во-первых, объект доступа к данным:
@Repository
public class DatabaseDAO {
@Autowired
private SimpleJdbcTemplate jdbcTemplate;
public List<String> getAllRecords() {
return jdbcTemplate.queryForObject("select record from my_table", List.class);
}
}
Услуга:
@Service
public class DataService {
@Autowired
private DatabaseDAO database;
public List<String> getDataAsList() {
List<String> out = database.getAllRecords();
out.add("Create New...");
return out;
}
}
И, наконец, контроллер:
@Controller("/index.html")
public class IndexController {
@Autowired
private DataService dataService;
@RequestMapping(method = RequestMethod.GET)
public String doGet(ModelMap modelMap) {
modelMap.put(dataService.getDataAsList());
return "index";
}
}
Я нашел эту статью очень хорошо для того, чтобы дать общий обзор аннотаций стереотипа, в дополнение к .
Ответ 2
Аннотации больше не являются MVC. Дополнительную информацию см. В справочной документации . Примером использования аннотации @Component или ее спецификации является tcServer с его поддержкой мониторинга. См. здесь для примера. Эта поддержка мониторинга добавляется с ткачеством AspectJ с загрузкой.
Подводя итог, аннотации могут использоваться в разных настройках во время выполнения после запуска контейнера Spring или при компиляции/времени загрузки с ткачеством AspectJ.
Ответ 3
Не забудьте добавить этот тег в xml
<context:component-scan base-package="com.example.beans"/>